0

J'ai installé un bouton « démarrer » sur ma page:Facebook Messenger bouton « Mise en route » ne pas envoyer la charge utile définie par l'utilisateur

curl -X POST -H "Content-Type: application/json" -d '{ 
    "get_started":{ 
    "payload":"GET_STARTED_PAYLOAD" 
    } 
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=token" 

Cela fonctionne bien et répond avec {"result":"success"}

Si je vérifie les données:

curl -X GET "https://graph.facebook.com/v2.6/me/messenger_profile?fields=get_started&access_token=token 

J'ai une bonne réponse: {"data":[{"get_started":{"payload":"GET_STARTED_PAYLOAD"}}]}

Cependant quand je reçois le webhook postback, j'ai cette charge utile:

{ 
    "object": "page", 
    "entry": [ 
    { 
     "id": "id1", 
     "time": 1501688073860, 
     "standby": [ 
     { 
      "recipient": { 
      "id": "id1" 
      }, 
      "timestamp": 1501688073860, 
      "sender": { 
      "id": "id2" 
      }, 
      "postback": { 
      "title": "Get Started" 
      } 
     } 
     ] 
    } 
    ] 
} 

Il y a maintenant je peux obtenir ainsi la charge utile je définissais (GET_STARTED_PAYLOAD) dans le webhook.

Sur this page la doc dit

paramètre de charge utile qui a été défini avec le bouton. Ceci est uniquement visible pour l'application qui envoie le message de modèle d'origine.

Ce message est un peu confus. Des idées ? Mettre cette réponse ici au cas où quelqu'un en aurait besoin.

+0

Assurez-vous que vous n'avez pas utilisé de jeton d'accès incorrect pour créer le bouton de démarrage. Il me semble que le dernier webhook que vous recevez est abonné à la page FB qui n'a pas le même jeton d'accès que le jeton d'accès utilisé pour créer le bouton. – dafilipaj

+1

Utilisez-vous le protocole de transfert? Une condition qui provoquerait cela est si l'application n'a pas actuellement de contrôle de thread, ce qui est indiqué par l'événement en cours de réception dans le canal 'standby'. – amuramoto

+0

Oui j'ai ouvert un ticket sur facebook dev et c'était la conclusion. Merci @amuramoto – rmonjo

Répondre

0

L'argument standby indique que vous utilisez le protocole de transfert et que l'application ne dispose pas de contrôle de thread. Cela vous empêche de recevoir l'événement de publication attendu, car l'application de réception n'est pas la même que l'application qui a envoyé la publication.