Facebook Messenger

Avrai bisogno di quanto segue per configurare il canale per Facebook Messenger:
  • Un account sviluppatore Facebook

  • Un'applicazione Facebook

  • Una pagina Facebook

  • Un token di accesso alla pagina

  • ID segreto applicazione

  • URL webhook

  • Token di verifica

Per eseguire il tuo assistente digitale (o una competenza autonoma) su Facebook Messenger, devi prima impostare una pagina Facebook e un'app Facebook. Per ulteriori informazioni, consulta la documentazione sulla piattaforma di messaggistica Facebook.

In poche parole, ecco come funziona. La pagina Facebook ospita il tuo assistente digitale. Gli utenti chat con l'assistente digitale tramite questa pagina quando utilizzano la finestra di chat in un browser desktop. Quando utilizzano un dispositivo mobile, gli utenti interagiscono con il tuo assistente digitale direttamente tramite Facebook Messenger stesso. In questo scenario, l'app Facebook consente al tuo assistente digitale di ottenere i messaggi gestiti da Facebook Messenger.

Per creare un canale Facebook Messenger, sono necessari artifact generati sia da Oracle Digital Assistant che da Facebook Messenger.

Da Oracle Digital Assistant, avrai bisogno di:

  • l'URL del webhook che collega il tuo assistente digitale a Facebook Messenger
  • il token di verifica che consente a Facebook Messenger di identificare l'assistente digitale

Da Facebook Messenger avrai bisogno di:

  • il token di accesso alla pagina
  • ID segreto applicazione

Poiché è necessario trasferire questi artifact tra Digital Assistant e Facebook Messenger, sarà necessario passare da una piattaforma all'altra durante la configurazione del canale.

Passo 1: Impostare Facebook Messenger

Inizia generando il Segreto applicazione e il token di accesso alla pagina in Facebook Messenger.

  1. Accedi all'account dello sviluppatore di Facebook.
  2. Crea l'app Facebook che utilizzerai per il canale:
    1. Nel browser, è possibile andare all'indirizzo https://developers.facebook.com/apps/.
    2. Selezionare la scheda Applicazioni personali e fare clic su Crea applicazione.
    3. Nella pagina Dettagli applicazione della Creazione guidata applicazione immettere il nome che si desidera utilizzare per l'applicazione e l'indirizzo di posta elettronica che si desidera utilizzare come contatto per l'applicazione. Quindi fare clic su Successivo.
    4. Nella pagina Casi d'uso, in Filtra per, selezionare Messaggio aziendale. Quindi selezionare Coinvolgi con i clienti su Messenger da Meta e fare clic su Successivo.
    5. Fare clic sulle altre pagine della procedura guidata, quindi fare clic su Panoramica nella pagina Crea applicazione.
  3. Una volta creata l'applicazione, selezionarla (sul lato sinistro della pagina Applicazioni personali), quindi, nella sezione Impostazioni applicazione, selezionare Base.
  4. Copiare il valore del campo Segreto applicazione e incollarlo in un formato appropriato nel sistema.

    Avrai bisogno del segreto app in un secondo momento per completare la configurazione del tuo canale Facebook.

  5. Nella sezione Pagina Applicazione fare clic su Crea nuova pagina.
  6. Nella pagina Crea pagina, compilare i campi obbligatori, quindi fare clic su Crea pagina.
    Nota

    Il nome della pagina deve contenere il nome dell'applicazione.
  7. Generare un token di accedere:
    1. Selezionare Tools > Graph API Explorer.
    2. Nella sezione Token di accesso della pagina, selezionare il nome dell'app in App Meta.
    3. Per il campo Utente o pagina, selezionare Recupera token.
    4. Nella sezione Autorizzazioni fare clic su Aggiungi un'autorizzazione e selezionare le autorizzazioni riportate di seguito.
      • business_management
      • pages_manage_metadata
      • pages_messaging
      • pages_show_list
    5. Fare clic su Genera token di accesso.
  8. Copiare il token di accesso e incollarlo in un punto appropriato.

    Questo token, che consente all'applicazione Facebook di accedere all'API di messaggistica di Facebook, consente di completare la definizione del canale in Digital Assistant.

Passo 2: Creare il canale in Digital Assistant

Completare la finestra di dialogo Crea canale fornendo le chiavi Token di accesso alla pagina e Segreto applicazione da Facebook.
  1. In Digital Assistant, fare clic sui canali nel menu a sinistra, quindi scegliere Utenti.
  2. Fare quindi clic su Aggiungi canale per aprire la finestra di dialogo Crea canale.

  3. Dai un nome al tuo canale.

  4. Scegliere Facebook Messenger come tipo di canale.

  5. Nel campo Token di accesso pagina incollare il token di accesso alla pagina generato in precedenza nella procedura di impostazione di Facebook Messenger.

  6. Nel campo Segreto applicazione incollare il segreto dell'applicazione copiato in precedenza nella procedura Imposta Facebook Messenger.

  7. Fare clic su Crea.

  8. Nella pagina Canali, copiare sia il token di verifica che l'URL WebHook e incollarli in un punto appropriato nel sistema. Avrai bisogno di questi per configurare il webhook di Facebook.
    Segue la descrizione dell'immagine fb-channel-complete.png
    Descrizione dell'immagine fb-channel-complete.png

Passo 3: configurare il webhook di Facebook Messenger

In Facebook Messenger, definire l'URL di callback utilizzando l'URL del webhook generato da Digital Assistant nel passo precedente.

  1. Nella console di Facebook Messenger, vai al progetto che hai inizialmente creato per il webhook.
  2. Selezionare Impostazioni API Messenger per aprire la pagina Impostazione API Messenger.
  3. Nel campo URL richiamata incollare l'URL del webhook ottenuto dalla pagina Canali di Digital Assistant.
  4. Nel campo Verifica token della console Messenger incollare il token di verifica dalla pagina Canali di Digital Assistant.
  5. Nella sezione Campi webhook, selezionare gli eventi di callback messages e messaging_postbacks.
  6. Fare clic su Verifica e salva.
  7. Iscriviti alla pagina:
    1. Nella sezione Genera token di accesso della pagina Impostazione API Messenger, selezionare la pagina Facebook per il canale.
    2. Fare clic su Aggiungi sottoscrizione.
    3. Nella finestra di dialogo Modifica sottoscrizioni pagina, verificare che siano selezionati messaggi e messaging_postbacks e fare clic su Conferma.

Passaggio 4: abilitare il canale Facebook

Una volta completata la configurazione, sei pronto per attivare il canale Facebook.

  • In Digital Assistant, selezionare il canale e attivare il controllo Canale abilitato.
  • Fare clic su icona per l'elenco a discesa Instrada a... e selezionare l'assistente digitale o lo skill che si desidera associare al canale.

Ora puoi testare il bot attraverso il canale.

Passo 5: Prova il tuo bot su Facebook Messenger

Con il Canale di Facebook e la configurazione di messaggistica completa, puoi testare il tuo bot utilizzando la tua pagina Facebook, Facebook Messenger (https://www.messenger.com/) e l'app Facebook Messenger sul tuo dispositivo.

  1. Andare a https://www.messenger.com/.
  2. Nell'interfaccia di Messenger, immettere il nome della pagina da cercare.
  3. Inizia a chattare con il tuo assistente digitale (o abilità autonoma).

Menu persistente

Facebook Messenger consente di creare un menu persistente accanto al campo Messaggio. Per ulteriori informazioni sulla funzione, vedere https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/.

Ecco un esempio che mostra le voci di menu persistenti per "Order Pizza" e "Order Pasta":



Crea una voce di menu persistente

Per aggiungere voci di menu persistenti di Facebook per un assistente digitale o uno skill autonomo, effettuare le operazioni riportate di seguito.

  1. Assicurarsi di disporre di tutti i prerequisiti, incluso un pulsante per iniziare.

    Questi prerequisiti sono elencati qui: https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/#requirements

  2. Aggiungere un'azione per ogni voce di menu nell'array call_to_actions del menu persistente di Facebook, come descritto in genere in https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/#set_menu.
  3. Impostare le voci di menu persistenti con una chiamata POST nell'API della piattaforma Messenger.

    L'URI della richiesta è https://graph.facebook.com/v2.6/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>, dove <PAGE_ACCESS_TOKEN> è il token di accesso alla pagina per l'applicazione Facebook.

Voci di menu persistenti per un assistente digitale

Di seguito è riportato il formato del POST nell'API della piattaforma di messaggistica per l'aggiunta di voci di menu persistenti di Facebook per un assistente digitale.

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"menu item display name",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"utterance that contains the skill's invocation name\"}}"
            }
          ]
    }
  ]
}

Per il payload, utilizzare un'azione system.textReceived che passa un'espressione da Facebook Messenger all'assistente digitale tramite una variabile system.text. Tale espressione dovrebbe contenere il nome di invocazione della competenza di destinazione (cioè essere un'invocazione esplicita) al fine di garantire un corretto instradamento.

Ecco un esempio di creazione di due voci di menu persistenti per la tua abilità in Facebook Messenger ("Order Pizza" e "Order Pasta"):

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"Order Pizza",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"Order pizza from Pizza Joe \"}"
            },
            {
              "title":"Order Pasta",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"Order pasta from Pizza Joe \"}"
            }
          ]
    }
  ]
}

Voci di menu persistenti per una competenza autonoma

Di seguito è riportato il formato POST nell'API della piattaforma di messaggistica per l'aggiunta di voci di menu persistenti di Facebook per uno skill standalone.

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"menu item display name",
              "type":"postback",
              "payload":"{\"action\":\"action name\",\"variables\": {}"
            }
          ]
    }
  ]
}

Il payload è il nome dell'evento mappato al flusso che si desidera attivare nel flusso della finestra di dialogo dello skill.

E poi faresti riferimento a quell'azione di aiuto nel menu persistente di Facebook.

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"Help",
              "type":"postback",
              "payload":"{\"action\":\"help\",\"variables\": {}"
            }
          ]
    }
  ]
}

Funzioni supportate

I canali di Facebook Messenger in Digital Assistant supportano le seguenti funzionalità:

  • testo (sia di invio che di ricezione)
  • immagini (sia di invio che di ricezione)
  • file (sia di invio che di ricezione)
  • emoji (sia di invio che di ricezione)
  • posizione, ma non più valida (sia di invio che di ricezione)
  • collegamenti
  • postback
  • richieste di posizione
  • proprietà personalizzate
  • componenti carosello
  • elencare i componenti

Se si intende indirizzare la propria abilità a più canali con diverse funzionalità di formattazione e sintassi, è possibile utilizzare il markup HTML di base nei messaggi. In tal caso, tale markup verrà automaticamente convertito nel formato di markdown di Facebook Messenger quando il messaggio viene trasmesso al canale. Questo è particolarmente utile se stai indirizzando le tue abilità ad altri canali oltre a Facebook Messenger. Vedere Formattazione di testo ricco nei canali.

Vincoli messaggio

I canali di Facebook Messenger in Digital Assistant hanno i seguenti vincoli di messaggio:

  • Messaggi di testo
    • Lunghezza massima del messaggio di testo: 640 caratteri. Se la lunghezza supera 640, il testo viene diviso su più messaggi.
    • Lunghezza massima dell'etichetta di azione testo: 20 caratteri
    • Tipi di azioni di testo consentiti: Postback, Call, URL
    • Numero massimo di azioni di testo: 3. Se ci sono più azioni di testo, il messaggio viene convertito in più schede orizzontali, con lo stesso testo utilizzato come titolo su ogni scheda e ogni scheda contenente fino a 3 azioni.
  • Schede orizzontali
    • Lunghezza massima del titolo: 80 caratteri
    • Lunghezza massima della descrizione: 80 caratteri
    • Lunghezza massima dell'etichetta di azione della scheda: 20 caratteri
    • Numero massimo di carte: 10
    • Numero massimo di azioni carta: 3. Se il numero di azioni della scheda supera 3, la scheda viene duplicata per eseguire il rendering delle azioni della scheda rimanenti.
    • Numero minimo di azioni carta: 0
    • Numero massimo di azioni elenco carte: 0
    • È richiesta almeno una descrizione, un'immagine o un'azione?: Sì
    • Tipi di azioni della carta consentite: Postback, Call, URL, Condividi
    • Tipi di azioni elenco carte consentite: N/D
  • Schede verticali
    • Non supportata
  • Messaggi allegato
    • Supportato?: Sì
    • Azioni allegato consentite?: No
  • Pulsanti di azione
    • Lunghezza massima dell'etichetta di azione globale: 20 caratteri
    • Numero massimo di azioni globali: 11
    • Tipi di azioni globali consentiti: Postback

Estensioni canale Facebook Messenger

Per i canali di Facebook Messenger, è possibile estendere la funzionalità dei componenti di Common Response con funzionalità specifiche di Facebook.

Per accedere alle estensioni, utilizzare l'elemento channelCustomProperties nei metadati del componente Risposta comune e impostare le proprietà appropriate. Il codice ha il formato seguente:

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

Di seguito sono riportate le proprietà personalizzate disponibili per i canali di Facebook Messenger:

Nome proprietà Valori ammessi Si applica a... descrizione;
top_element_style
  • compact
  • large
Elementi di risposta con i seguenti attributi:
  • type: "cards"
  • cardLayout: "vertical"
Determina la modalità di visualizzazione dell'immagine della prima scheda. Per ulteriori informazioni, vedere https://developers.facebook.com/docs/messenger-platform/send-messages/template/list/#cover_image.

Se non viene specificato, Oracle Digital Assistant imposta per impostazione predefinita questa proprietà su compact, ovvero l'opposito dell'impostazione predefinita di Facebook.

image_aspect_ratio
  • horizontal
  • square
Elementi di risposta con i seguenti attributi:
  • type: "cards"
  • cardLayout: "horizontal"
Le proporzioni utilizzate per eseguire il rendering delle immagini. L'impostazione predefinita è horizontal (1.91:1). square imposta le proporzioni su 1:1 . Vedere https://developers.facebook.com/docs/messenger-platform/reference/template/generic#attachment
sharable
  • true
  • false
Elementi di risposta di tipo cards. Impostare su true per abilitare il pulsante di condivisione nativa in Messenger per il messaggio del modello. L'impostazione predefinita è false. Vedere https://developers.facebook.com/docs/messenger-platform/reference/template/generic#attachment
webview_height_ratio
  • compact
  • tall
  • full
Uno degli elementi riportati di seguito.
  • Una scheda in cui è specificata la proprietà "url"
  • Un action dove "type": "url"
Altezza della vista Web aperta quando si tocca il pulsante URL o si tocca l'altezza della scheda con la proprietà URL specificata. Vedere https://developers.facebook.com/docs/messenger-platform/reference/buttons/url#properties
messenger_extensions
  • true
  • false
Uno degli elementi riportati di seguito.
  • Una scheda in cui è specificata la proprietà "url"
  • Un action dove "type": "url"
Messenger Extensions ti offre la possibilità di integrare strettamente le esperienze nella webview con l'esperienza di Messenger rendendo accessibili funzionalità aggiuntive nella webview. Vedere https://developers.facebook.com/docs/messenger-platform/reference/messenger-extensions-sdk
fallback_url Un URL valido Uno degli elementi riportati di seguito.
  • Una scheda in cui è specificata la proprietà "url"
  • Un action dove "type": "url"
L'URL da utilizzare sui client che non supportano le estensioni Messenger. Se non viene definito, come fallback verrà utilizzato il valore url. Può essere specificato solo se messenger_extensions è true. Vedere https://developers.facebook.com/docs/messenger-platform/reference/buttons/url#properties
webview_share_button
  • hide
Uno degli elementi riportati di seguito.
  • Una scheda in cui è specificata la proprietà "url"
  • Un action dove "type": "url"
Impostare su hide per disabilitare il pulsante di condivisione nella webview (per informazioni riservate). Questa azione non ha effetto sulle condivisioni avviate dallo sviluppatore che utilizza le estensioni.
share_contents Segue il formato utilizzato nell'API di invio di Facebook Messenger
  • Un action dove "type": "share"
Il messaggio che si desidera venga visualizzato dal destinatario della condivisione, se è diverso da quello a cui è allegato questo pulsante. Vedere https://developers.facebook.com/docs/messenger-platform/reference/buttons/share#properties

Di seguito è riportato un esempio di proprietà personalizzate definite a livello di elemento di risposta (top_element_style) e a livello di schede (webview_height_ratio e fallback_url):

responseItems:
  - type: "cards"
    cardLayout: "vertical"
    cards:
      - title: "${pizzas.name}"
        description: "${pizzas.description}"
        imageUrl: "${pizzas.image}"
        url: "${pizzas.moreInfo}"
        iteratorVariable: "pizzas"
        channelCustomProperties:
          - channel: "facebook"
            properties:
              webview_height_ratio: "compact"
              fallback_url: "http://www.oracle.com"
    channelCustomProperties:
      - channel: "facebook"
        properties:
          top_element_style: "large"
...

Per informazioni più generali su channelCustomProperties, vedere Estensioni specifiche del canale.