2017-03-24 18 views
1

リクエストフォームの最後にfacebook messengerチェックボックスプラグインを追加して、ユーザーがメッセンジャー経由で通知を受け入れることができます。checkboxプラグイン付きMessengerボットユーザーrefとユーザーIDで会話を追跡する方法

ユーザーがオプトインすると、webhookはフォームに設定したuser_refでコールバックを受け取ります。

私たちは、ユーザーからの領収書や実際のメッセージを読んで、私達は配達のように受け取る

しかし、他のメッセージこのuser_refにオプトインの確認を送信するには、もはやユーザーREFが、ユーザーIDが含まれていません。

これはFacebookのの公式ドキュメントです:

あなたがコールバックイベントを受信した後、あなたは以下に示すように、受信者にuser_ref識別子を使用してユーザーをメッセージング開始するために送信APIを呼び出すことができます。このフィールドは、プラグインがレンダリングされ、オプトインが確認される前に使用された一意のuser_refパラメータと同じです。

Send APIへの呼び出しが成功した場合、レスポンスにはrecipient_idパラメータが含まれます。このパラメータは、将来のAPI呼び出しで使用できる安定したユーザーIDです。

したがって、最初のメッセージと新しいメッセージの間を追跡することは不可能です。誰かがこれのための解決策を見つけましたか?

は事前にありがとうございました。

答えて

0

たとえば、ユーザがオプションのrefパラメータを使用してオプトインすると、追加情報を送信できます。

function confirmOptIn() { 
     FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, { 
     'app_id':'APP_ID', 
     'page_id':'PAGE_ID', 
     'ref': '[email protected]', 
     'user_ref':'UNIQUE_REF_PARAM' 
     }); 

あなたはあなたのウェブフックイベントでoptin内のユーザ名を受け取ります:あなたは私のウェブサイトにログインしているユーザーのユーザー名を送信することができます

{ 
    "recipient":{ 
    "id":"PAGE_ID" 
    }, 
    "timestamp":1234567890, 
    "optin":{ 
    "ref":"[email protected]", 
    "user_ref":"UNIQUE_REF_PARAM" 
    } 
} 

を次に、あなたがメッセージを開始するために送信APIを呼び出すことができますユーザーはuser_refを使用しています。

Send APIへの呼び出しが成功した場合、レスポンスにはrecipient_idパラメータが含まれます。このパラメータは、将来のAPI呼び出しで使用できる安定したユーザーIDです。

...既にあなたのウェブサイトのユーザー名にマップできるメッセンジャーIDが届きます。ここで、私はuser_refで送信APIを呼び出すと、私は私のウェブサイトのユーザー名に応じて取得するユーザーIDをマップするために、公式の開発者サイトから少し変形例:

あなたが作るていないのはなぜ
function callSendAPICheckbox(messageData, userApplicationId) { 
((userApplicationId) => { 
    request({ 
      uri: 'https://graph.facebook.com/v2.6/me/messages', 
      qs: { 
       access_token: PAGE_ACCESS_TOKEN 
      }, 
      method: 'POST', 
      json: messageData 

     }, 
     function(error, response, body) { 
      if (!error && response.statusCode == 200) { 
       var recipientId = body.recipient_id; 
       var messageId = body.message_id; 

       if (messageId) { 
        console.log("Map messenger user ID %s with the username of my website %s", recipientId, userApplicationId); 
       } else { 
        console.log("Successfully called Send API for recipient %s", 
         recipientId); 
       } 
      } else { 
       console.error("Failed calling Send API for userId " + 
        recipientId, response.statusCode, response.statusMessage, body.error); 
      } 
     }); 

})(userApplicationId) 
} 
0

sendTextMessageのメタデータフィールドの使用。ユーザーに送信するメッセージごとに、メタデータも送信され、配信されるメッセージの応答を受け取ると、メタデータフィールドが検索されます。ユーザーがチェックボックスのプラグインを選択して、イベントが、私は自分のサーバー上のコールを受信トリガされると、それはuser_refが含まれている場合は、チェック

:ここ

は、私が何をすべきかです。そうであれば、 user_refを使用してカスタムメタデータを持つテキストメッセージをユーザーに送信します。ユーザーがメッセージを受信すると、 webhookは、ドキュメントに記載されているように jsonデータを送信します。このレスポンスを受け取った user_refを特定するために、 user_refを使用してメッセージを送信する前に、 string + user_refの組み合わせであるカスタムメタデータを設定しました。このカスタムメタデータを使用して、以前に user_refを使用してメッセージを送信したユーザーの sender.idを特定します。 sender.idは、私が一般的にユーザにメッセージを送信し、また psidとして知られている、取得しようとしているユーザIDである私の pageidrecipient.idです。

上記の私が通常やっている論理部分だけです。 コードと一緒に詳細のソリューションについては、私はすでにそれを投稿したhere

関連する問題