Messages Apple pris en charge pour les fonctions métier

Pour les briques que vous affichez via les canaux Apple Messages for Business dans Oracle Digital Assistant, vous pouvez utiliser des fonctionnalités propres à Apple Messages for Business en plus des fonctionnalités généralement prises en charge sur d'autres canaux.

Pour ce faire, vous utilisez généralement l'élément channelCustomProperties dans les composants Common Response (Réponse commune) pour insérer des propriétés propres à Apple.

Le format du code est le suivant :

...
            channelCustomProperties:
            - channel: "apple"
              properties:
                PROPERTY_NAME: "PROPERTY_VALUE"
...

Lien enrichi

Pour incorporer des messages de lien enrichi dans les canaux Apple Messages for Business, vous utilisez la propriété personnalisée de canal richLinkData et sa sous-propriété assets. La propriété assets peut prendre un objet image ou video, comme indiqué dans cet exemple :

channelCustomProperties:
  - channel: "apple"
    properties:
      richLinkData:
        assets:
          image:
            data: "<base-64-encoded image data>"
            mimeType: "image/jpeg"
          video:
            mimeType: "video/mp4",
            url: "https://example.com/example.mov"

Exemple : Image de lien enrichi

responseItems:
  - type: "text"
    text: "iPad Pro"
    actions:
      - type: "url"
        url: "https://www.apple.com/ipad-pro/"
    channelCustomProperties:
      - channel: "apple"
        properties:
          richLinkData:
            assets:
              image:
                data: "<base 64 encoded image data>"
                mimeType: "image/jpeg"

Exemple : vidéo de lien enrichi

responseItems:
  - type: "text"
    text: "HomePod"
    actions:
    - type: "url"
      url: "https://images.apple.com/media/films/expand/homepod-expand-tpl-cc-us-20180306_1280x720h.mp4"
    channelCustomProperties:
    - channel: "apple"
      properties:
         richLinkData:
            assets:
              image:
                data: "<base 64 encoded image data>"
                mimeType: "image/jpeg"
              video:
                mimeType: "video/mp4",
                url: "https://store.storevideos.cdn-apple.com/v1/store.apple.com/st/1619042871000/mx532-

Réponse rapide

Le type de message Réponse rapide est une convention utilisée dans Apples Messages for Business pour fournir deux à cinq réponses prédéfinies qu'un utilisateur peut sélectionner d'un simple appui.

Vous pouvez définir le texte récapitulatif de la réponse rapide à l'aide de la propriété personnalisée de canal summaryText :

channelCustomProperties:
  - channel: apple
    properties:
      summaryText: Your selection

Si vous ne fournissez pas la propriété summaryText, le canal utilise la propriété text à la place.

En outre, tenez compte des points suivants :

  • summaryText ne doit pas comporter plus de 25 caractères.
  • Pour les mots-clés, utilisez A, B, C, D et E (au lieu de chiffres).

Exemple : réponse rapide

responseItems:
  - text: "You can type or select from the options below:"
    type: text
    actions:
      - payload:
          variables:
            menuAction: orderAccessories
          action: orderAccessories
        label: "Order Accessories"
        type: postback
        keyword: "A"
      - payload:
          variables:
            menuAction: checkOrder
          action: checkOrder
        label: "Check Order Status"
        type: postback
        keyword: "B"
    channelCustomProperties:
      - channel: apple
        properties:
          summaryText: Your selection

Sélecteur de liste

Apple Messages for Business a un type de message de sélecteur de liste que vous pouvez utiliser pour permettre aux utilisateurs de sélectionner des options. Pour intégrer des messages de sélecteur de liste dans les canaux Apple Messages for Business, vous utilisez les propriétés personnalisées de canal Apple suivantes :

  • images. Voici la liste des objets utilisés par les propriétés receivedMessage et replyMessage et qui contiennent les éléments suivants :
    • identifier : identificateur par lequel l'image est référencée par d'autres propriétés.
    • imageUrl : URL de l'image à afficher.
    • description.
  • receivedMessage. Il s'agit d'un objet avec les éléments facultatifs suivants :
    • imageIdentifier. Sa valeur doit correspondre à la propriété identifier de l'une des images définies dans la propriété personnalisée images.
    • style. Les valeurs possibles sont icon, small et large.
    • subtitle.
    • title.
  • replyMessage. Il s'agit d'un objet avec les éléments facultatifs suivants :
    • imageIdentifier. Sa valeur doit correspondre à la propriété identifier de l'une des images définies dans la propriété personnalisée images.
    • style. Les valeurs possibles sont icon, small et large.
    • subtitle.
    • title.
  • imageIdentifier. Vous pouvez utiliser cette propriété dans l'élément channelCustomProperties de l'élément options pour ajouter des images aux options du sélecteur. Sa valeur doit correspondre à la propriété identifier de l'une des images définies dans la propriété personnalisée images.

Vous pouvez créer des sélecteurs de liste à sélection unique à l'aide des types d'élément de réponse cards ou editForm.

Pour les sélecteurs de liste à sélection unique utilisant editForm :

  • Définissez displayType pour les éléments sur "singleSelect".

Pour les sélecteurs de liste à sélection multiple, utilisez le type d'élément de réponse editForm :

  • Définissez displayType pour les éléments sur "multiSelect".

Vous pouvez également créer des sélecteurs de liste avec plusieurs sections à l'aide de n'importe quelle combinaison de listes singleSelect et multiSelect. Pour ce faire, créez une entrée dans items pour chaque section et définissez displayType de chaque entrée sur "singleSelect" ou "multiSelect", en fonction du type de liste souhaité pour cette section.

Exemple : sélecteur de liste à sélection unique à l'aide de cartes

responseItems:         
  - type: "cards"
    cardLayout: "horizontal"
    headerText: "Here are our pizzas you can order today:"
    visible:
      entitiesToResolve:
        include: "Type"
    cards:
      - title: "${enumValue}"
        description: ""
        imageUrl: "system.entityToResolve.value.image"
        iteratorVariable: "system.entityToResolve.value.enumValues"
        actions:
          - label: "Order Now"
            type: "postback"
            payload:
              variables:
                pizza: "${enumValue}"
    channelCustomProperties: 
      - channel: "apple"
        properties:
          images:
            - identifier: image1
              imageUrl: "https://example.com/url1.jpg"
            - identifier: image2
              imageUrl: "https://example.com/url2.jpg"
          receivedMessage:
            imageIdentifier: "image1"
            style: "small"
            subtitle: "Fresh baked for you"
            title: "Select Your Pizza"
          replyMessage:
            title: "Selected Pizza"
            style: "small"
            imageIdentifier: "image2"

Exemples : ListPicker à sélection unique à l'aide de editForm

responseItems:
  - headerText: "Let's start Shopping!"
    type: editForm
    formColumns: 1
    items:
      - displayType: singleSelect
        name: selectHeadset
        options:
          - label: "Logitech® G435 LIGHTSPEED Wireless Gaming Headset"
            value: LogitechG435
            channelCustomProperties:
              - channel: apple
                properties:
                    imageIdentifier: logitech g435
          - label: "JBL Live 660NC Wireless Over-Ear NC Headphones"
            value: JBL660NC
            channelCustomProperties:
              - channel: apple
                properties:
                    imageIdentifier: jbl 660nc
          - label: "Altec Lansing® 3-In-1, MZX4100-PGRN-STK-6"
            value: altec
            channelCustomProperties:
              - channel: apple
                properties:
                    imageIdentifier: altec
        label: Select the headset of your choice
        placeholder: Tap to select the product
        channelCustomProperties:
          - channel: apple
            properties:
                subtitle: Headset of your choice
        required: true
    actions:
      - processingMethod: mapVariable
        variable: skill.skillSelectedProduct
        label: Submit
        type: submitForm
    channelCustomProperties:
      - channel: apple
        properties:
            showSummary: true
            receivedMessage:
              imageIdentifier: main
              subtitle: Personalized search on basis of your requirements
              style: large
              title: "Tap & Select Headphones"
            images:
              - identifier: main
                imageUrl: "https://example.com/b/shopping-cart-headphones-23724543.jpg"
              - identifier: logitech g435
                imageUrl: "https://example.com/60_o01_040122/2310460.jpg"
                description: "Play never ends with G435."
              - identifier: jbl 660nc
                imageUrl: "https://example.com/7693360_o01/7693360.jpg"
                description: "Enjoy while studying or working out."
              - identifier: altec
                imageUrl: "https://example.com/18_o01_110422/5159518.jpg"
                description: "Simple setup."
            replyMessage:
              imageIdentifier: logitech g435
              subtitle: "Your cart is ready!"
              style: icon
              title: Tap to view your response.

ListPicker (sélection multiple)

responseItems:
  - headerText: Choose the type of product you are looking
    type: editForm
    formColumns: 1
    items:
      - displayType: multiSelect
        name: features
        options:
          - label: Noise cancellation
            value: Noise cancellation
          - label: Microphone/Remote
            value: Microphone/Remote
          - label: Wireless
            value: Wireless
          - label: USB connectivity
            value: USB connectivity
          - label: Voice Assistant Support
            value: Voice Assistant Support
          - label: Fast Charging
            value: Fast Charging
        label: What features are you looking for?
        placeholder: Select multiple-values
        required: true
      - displayType: multiSelect
        name: usage
        options:
          - label: Attending Online Meetings
            value: Attending Online Meetings
          - label: Music
            value: Music
          - label: Casual usage
            value: Casual usage
          - label: Binge Watching
            value: Binge Watching
          - label: Jogging/Gym
            value: Jogging/Gym
        label: Your purpose of usage
        placeholder: Select multiple-values
        required: true
    actions:
      - processingMethod: mapVariable
        variable: requirementMap
        label: Submit
        type: submitForm
    channelCustomProperties:
      - channel: apple
        properties:
            receivedMessage:
              imageIdentifier: main
              subtitle: "Customize your product search!"
              style: icon
              title: "Tap & Provide your Preferences"
            images:
              - identifier: main
                imageUrl: "https://example.com/images/search-filter-icon.jpg"
              - identifier: filter
                imageUrl: "https://example.com/images/filter.jpg"
            replyMessage:
              imageIdentifier: filter
              style: icon

Sélecteur d'heure

Vous utilisez le type de message Sélecteur de temps dans Messages Apple pour les entreprises pour offrir aux utilisateurs des créneaux horaires. Chaque élément de champ timePicker dans editForm correspond à un créneau horaire que l'utilisateur peut choisir. Vous utilisez la propriété defaultValue pour définir l'heure de début et la propriété personnalisée de canal Apple duration pour définir la durée de l'intervalle en secondes. Il existe également des propriétés personnalisées de canal Apple pour timeZoneOffset et location.

Exemple : Time Picker

responseItems:
  - headerText: "Select Date & Time for your appointment"
    type: editForm
    formColumns: 2
    items:
      - displayType: timePicker
        defaultValue: "2023-05-10T06:00Z"
        name: 27JanOne
        label: Slots available
        channelCustomProperties:
          - channel: apple
            properties:
              duration: 1800
        required: true
      - displayType: timePicker
        defaultValue: "2023-05-05T07:30Z"
        name: 27JanTwo
        label: Enter Time
        channelCustomProperties:
          - channel: apple
            properties:
              duration: 1800
        required: true
      - displayType: timePicker
        defaultValue: "2023-05-11T07:30Z"
        name: 24th
        label: another time
        channelCustomProperties:
          - channel: apple
            properties:
              duration: 1800
        required: true
    actions:
      - label: Submit
        type: submitForm
    channelCustomProperties:
      - channel: apple
        properties:
            receivedMessage:
              imageIdentifier: clock
              subtitle: "Every slot is of 30 mins.!"
              style: large
              title: "Tap & Select from available Slots"
            images:
              - identifier: clock
                imageUrl: "https://example.com/images/clock.png"
                description: clock
            timezoneOffset: 1200
            replyMessage:
              imageIdentifier: clock
              style: icon
              title: Selected Slot
            location:
              latitude: 28.605354
              radius: 1.5
              title: Supremo Customer Service Center
              longitude: 77.053546		

Formulaire Apple

Vous pouvez créer des messages de formulaire Apple à l'aide du type d'élément de réponse editForm avec une combinaison des types de champ suivants :

  • numberInput
  • textInput
  • datePicker
  • timePicker
  • singleSelect
  • multiSelect

Outre les propriétés de canal personnalisées dont vous avez besoin pour les différents champs du formulaire, vous utilisez les propriétés personnalisées de canal Apple suivantes pour l'ensemble du formulaire :

  • submitForm, que vous définissez sur true pour le dernier élément du formulaire.
  • pickerTitle, que vous pouvez éventuellement utiliser pour définir le texte affiché dans un champ de texte de sélecteur donné.
  • selectedItemIndex, que vous pouvez éventuellement utiliser pour définir le numéro d'index de l'élément à sélectionner par défaut. Valeur par défaut : 0.

Vous définissez une page de bienvenue pour le formulaire avec la propriété personnalisée de canal Apple splash. La propriété splash contient les éléments suivants :

  • header.
  • splashText.
  • buttonTitle. Texte figurant sur le bouton. Obligatoire.
  • imageIdentifier.

Exemple : formulaire Apple

responseItems:
  - headerText: Provide Delivery Address details
    type: editForm
    formColumns: 1
    items:
      - displayType: textInput
        name: house_address
        label: House No.
        required: true
        maxLength: 100
        channelCustomProperties:
          - channel: apple
            properties:
              subtitle: Your House/Appartment No.
              options:
                keyboardType: numberPad
      - displayType: textInput
        name: street_address
        label: Street Name
        channelCustomProperties:
          - channel: apple
            properties:
              subtitle: Your Street Details
              options:
                keyboardType: default
        required: true
        maxLength: 200
      - displayType: numberInput
        name: zipcode
        label: Where do you live?
        placeholder: Enter your area zipcode
        channelCustomProperties:
          - channel: apple
            properties:
              subtitle: Zip-code
        required: true
    actions:
      - label: Submit
        type: submitForm
    channelCustomProperties:
      - channel: apple
        properties:
          showSummary: true
          receivedMessage:
            imageIdentifier: main
            subtitle: "Add your details carefully!"
            style: icon
            title: "Tap & Provide your Delivery details"
          images:
            - identifier: main
              imageUrl: "https://example.com/delivery-address.png"
            - identifier: saveAddress
              imageUrl: "https://example.com/successful-delivery.png"
          replyMessage:
            imageIdentifier: saveAddress
            style: icon
            title: Your address details are saved. Tap to review.
          splash:
            imageIdentifier: main

Authentification

Vous pouvez utiliser le composant OAuth Account Link de l'assistant numérique pour les messages d'authentification dans Apple Messages for Business. Vous pouvez utiliser deux approches :

  • Dans la propriété Autoriser l'URL du composant Lien de compte OAuth, indiquez les paramètres de requête responseType et scope.

    Une fois l'authentification réussie, il renvoie un code d'autorisation, que vous utilisez ensuite pour extraire un jeton d'accès.

  • Dans la propriété Autoriser l'URL du composant Lien de compte OAuth, indiquez les paramètres de requête responseType, clientSecret et scope.

    Une fois l'authentification réussie, un jeton d'accès est renvoyé.

Application iMessage

Avec Apple Messages for Business, vous pouvez créer des messages de type iMessage App, qui sont des messages de données interactifs personnalisés. Pour que ces messages fonctionnent dans un canal Apple Messages for Business dans Digital Assistant, vous devez construire la charge utile de données interactive Apple dans la brique elle-même à l'aide d'un composant personnalisé.

Le composant personnalisé doit envoyer un message CMM (Common Message Model) brut contenant les attributs de charge utile suivants :

  • type: interactive (obligatoire)
  • interactiveData :
    • appIcon
    • appId
    • appName
    • URL (obligatoire)
    • bid (obligatoire)
    • receivedMessage
    • replyMessage
    • useLiveLayout

Pour obtenir un tutoriel sur la création d'une application iMessage, reportez-vous à Intégration de votre application iMessage dans la documentation d'Apple.

Pour plus d'informations sur l'utilisation du modèle de message commun de Digital Assistant, reportez-vous à la section Messagerie de conversation de la documentation du kit SDK Bots Node.

Exemple : iMessage Charge utile de l'application

{
  "type": "interactive",
  "interactiveData": {
    "appId": 12345678,
    "appName": "Package Delivery",
    "URL": "?name=WWDC%20Goodies&deliveryDate=09-06-2017&destinationName=Moscone%20Convention%20Center&street=747%20Howard%20St&state=CA&city=San%20
Fransisco&country=USA&postalCode=94103&latitude=37%2E7831&longitude=%2D122%2E4041&extraCharge=15%2E00",
    "bid": "com.apple.messages.MSMessageExtensionBalloonPlugin:4R3L6Z3UP2:com.example.apple-samplecode.PackageDelivery4R3L6Z3UP2.MessagesExtension",
    "receivedMessage": {
      "title": "PackageDelivery",
      "subtitle": "Tap to Install the iMessage App from App Store"
    }
  }
}

ChannelCustomProperties pour Apple Messages for Business

Nom Valeurs autorisées Applicable à... Description
images Objet imbriqué avec les propriétés suivantes :
  • imageUrl
  • identifier, qui est la chaîne par laquelle l'image est référencée à partir de l'élément imageIdentifier d'autres propriétés, telles que receivedMessage.
  • description, qui est une description textuelle facultative de l'image.
editForm éléments de réponse. Images que vous définissez pour utilisation dans les éléments de liste et d'autres emplacements de votre formulaire.
receivedMessage Objet imbriqué avec les propriétés suivantes, qui sont toutes facultatives :
  • imageIdentifier
  • style
  • subtitle
  • title
editForm éléments de réponse Message qui apparaît au-dessus d'un sélecteur de liste ou d'un autre type de message.
replyMessage Objet imbriqué avec les propriétés suivantes, qui sont toutes facultatives :
  • imageIdentifier
  • style
  • subtitle
  • title
editForm éléments de réponse Message qui apparaît une fois que l'utilisateur a effectué une sélection avec un sélecteur donné.
location Objet imbriqué avec les propriétés suivantes :
  • latitude
  • longitude
  • radius
  • title
editForm éléments de réponse. Fournit les coordonnées d'un emplacement donné.
showSummary
  • true
  • false
editForm éléments de réponse. Si true, un récapitulatif des options sélectionnées par l'utilisateur s'affiche. Valeur par défaut : false.
splash Objet imbriqué avec les propriétés suivantes :
  • imageIdentifier
  • buttonTitle
  • header
  • splashText
editForm éléments de réponse. Permet de définir une page de bienvenue pour le formulaire.
timeZoneOffset Un nombre editForm éléments de réponse. Différence en minutes entre l'heure dans le fuseau horaire du lieu et GMT.
imageIdentifier Chaînes qui correspondent à la valeur identifier pour toutes les images du tableau images. Objets du tableau options dans les éléments de réponse editForm. Permet d'appliquer une image à une option donnée dans les éléments de réponse de type editForm.
subtitle toute chaîne. editForm éléments de réponse. Sous-titre facultatif pour un sélecteur de liste.

Remarque : les propriétés telles que receivedMessage et replyMessage comportent également un élément subtitle facultatif.

duration Un nombre. Eléments de réponse editForm avec une valeur displayType de timePicker Nombre de secondes de la durée.
options Objet imbriqué avec des propriétés telles que keyboardType et dateFormat. Il existe des options distinctes pour les types de page datePicker et input. Reportez-vous à la documentation sur les messages de formulaire d'Apple. Eléments de réponse editForm avec la valeur displayType datePicker et textInput. Catégorie de propriétés propres au canal Apple Messages for Business qui peut être utilisée sur des articles individuels.

Remarque : cette catégorie est distincte de l'élément options de l'élément items dans les éléments de réponse editForm.

submitForm
  • true
  • false
ou false
Sur des éléments individuels du type d'élément de réponse dataSet. Définissez la valeur sur true si vous voulez que le formulaire soit envoyé lorsque l'élément est sélectionné. Valeur par défaut : false.
pickerTitle Chaîne Sur des éléments individuels du type d'élément de réponse dataSet. Valeur de chaîne représentant le texte facultatif affiché en regard du champ de texte du sélecteur. La valeur par défaut est une chaîne vide. Lorsque le champ de texte du sélecteur est vide, il est centré sur la page
selectedItemIndex Nombre Sur des éléments individuels du type d'élément de réponse dataSet. Vous pouvez éventuellement utiliser cette option pour définir le numéro d'index de l'article dans un sélecteur que vous souhaitez sélectionner par défaut. Valeur par défaut : 0.