web-dev-qa-db-ja.com

Facebookメッセンジャーボットの「開始」ボタンの設定方法とウェルカムメッセージの送信タイミング

「はじめに」

このURLにリクエストを送信しようとしました

https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN

しかし、うまくいきませんでした。

9
kanth

以下のようにPOST= API JSON本文の呼び出しを行います。

curl -X POST -H "Content-Type: application/json" -d '{
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
 {
  "payload":"USER_DEFINED_PAYLOAD"
 }
]
}' "https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"

参照: Facebookメッセンジャースタートボタン

郵便配達のスクリーンショット

15
Vaibhav Bansal

現在の形式は、 https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN

{ 
  "get_started":{
    "payload":"GET_STARTED_PAYLOAD"
  }
}
5
Neha Creado

正常に設定できた可能性はありますが、Facebookページとの既存の会話があるため、表示されていません。

「Get Started」スレッドを正常に設定した後、既存の会話スレッドを削除して新しいスレッドを開始した場合にのみ表示されます。

はじめにボタンは、Facebookページを初めて操作するときにのみ表示されるため、以前にページにメッセージを送信したことがある場合は、Facebook Messengerクライアントからスレッドを削除しない限り、「はじめに」を表示できません(モバイルまたはデスクトップ)。

FB Messenger Docs: から

[ようこそ]画面と[開始]ボタンを表示するには、特定の条件があります。

  • ユーザーがメッセンジャーのページを最初に操作したときにのみ表示されます
  • アプリが開発モードの場合、アプリの管理者/開発者/テスターのみがそれを見ることができます
  • アプリはWebhookのポストバックにサブスクライブする必要があります
4
Jon Church

貴重なコメントをありがとう

独立したPOST要求をこのURLに一度だけ送信する必要があります

https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN

このようにリクエストを送信するために郵便配達員を使用しました here

[開始]ボタンが正常に設定された場合、次の応答が返されます。

{
  "result": "Successfully added new_thread's CTAs"
}
3
kanth

ページアクセストークンを使用して投稿リクエストを送信する

https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN

次のデータで

{ 
  "get_started":{
     "payload":"<GET_STARTED_PAYLOAD>"
   }
}

Facebook Docs:Get Started Button

この新しい方法が問題を解決することを願っています。 Facebook Webを使用して送信済みメッセージを削除し、ボタンの動作を確認することを忘れないでください。

2
MithooG

Npmには、POST/DELETEアクションの機能をラップするライブラリがあります: https://www.npmjs.com/package/fb-get-started-button

$ npm install -g fb-get-started-button

$ fb-get-started-button add <YOUR PAGE ACCESS TOKEN>
Adding "Get Started" button with the payload "GET_STARTED"
Successfully added new_thread's CTAs

$ fb-get-started-button remove <YOUR PAGE ACCESS TOKEN>
Removing "Get Started" button
Successfully deleted all new_thread's CTAs
2
Danny Sullivan

適切なcurlコマンドを実行して設定する必要があります。このリンクをチェックして、その例を見てください。 https://developers.facebook.com/docs/messenger-platform/implementation#send_api

2
user2322082

私の意見ではより良い解決策は、Microsoft Bot Frameworkを使用し、その/ firstRunを使用してメッセンジャーの開始ボタンを送信することです

function firstRun(session) {
  console.log('This user is running our bot the first time')
  createUser(session)
  platforms.firstRun(session.message.user.id, session.message.address.channelId)
    .then((values) => {
      for (let value of values) {
        if (value.data.firstName && value.data.lastName) {
          session.userData.user.profile = value.data
        }
      }
    })
    .catch((errors => {
      console.log(errors);
    }))
  reply(session)
  session.endDialog()
}

Platform.firstRunは次のようになります

platforms.firstRun = function (userId, channel) {
    switch (channel) {
        case platforms.channels.emulator:
            return Promise.reject('none')
        case platforms.channels.facebook:
            return platforms.facebook.firstRun(userId)
        case platforms.channels.skype:
            return Promise.reject('none')
        default:
            return Promise.reject('none')
    }
}

これにより、platforms.facebook.firstRunが呼び出されます。

platforms.facebook.firstRun = function (userId) {
    return Promise.all([
        platforms.facebook.sendThread(facebookTemplates.greet(), 'Greeting'),
        platforms.facebook.sendThread(facebookTemplates.getStarted(), 'Get Started'),
        platforms.facebook.sendThread(facebookTemplates.getPersistentMenu(), 'Persistent Menu'),
        platforms.facebook.sendThread(facebookTemplates.getDomainWhitelisting(), 'Domain Whitelisting'),
        platforms.facebook.getProfile(userId)
    ])
}

Platform.facebook.sendThreadは次のようになります//ボット設定を変更するためにFacebookグラフAPIを呼び出します

platforms.facebook.sendThread = function (template, cmd) {

    return new Promise((resolve, reject) => {
        // Start the request
        request({
            url: platforms.facebook.GRAPH_BASE_URI + '/me/thread_settings?access_token=' + endpoints.FACEBOOK_PAGE_ACCESS_TOKEN,
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            form: template
        },
            function (error, response, body) {
                if (!error && response.statusCode == 200) {
                    // Print out the response body
                    resolve({ status: response.statusCode, data: body })
                } else {
                    // TODO: Handle errors
                    reject({ status: response.statusCode, data: error })
                }
            });
    })
}

FacebookTemplates.getStarted()に注目してください。実際には、以下に示すように開始するためのjsonがあります。

templates.getStarted = function () {
    return {
        setting_type: "call_to_actions",
        thread_state: "new_thread",
        call_to_actions: [
            {
                payload: payloads.FACEBOOK_GET_STARTED
            }
        ]
    }
}

すべてのチャットボットプラットフォームで最初の実行操作を実行するための完全にプラグ可能なコードアーキテクチャ。ボットで完全に動作します [〜#〜] here [〜#〜]

0
PirateApp

ターミナルで開いて、ホストフォルダーの場所に移動するだけの非常に簡単なソリューションです(私の場合は/var/www/html/booking/public/facebookbot)そして次のコードを貼り付けます:

curl -X POST -H "Content-type: application/json" -d '{ 
    "setting-type":"call_to_actions",
    "thread_state":"new_thread",
  "get_started":{
     "payload":"GET_STARTED_PAYLOAD"
   }
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR_ACCESS_TOKEN"

enterキーを押して、正しいアクセストークンを入力してください。また、上記のコードサンプルのGET_STARTED_PAYLOADであるペイロードから開始ボタンが押されたときも認識できます。

0
Akhmad

私たちの場合、以下が機能しました:

  • ヒット thread_settings AP​​I

    https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>

  • 次のサンプルJSONを渡しました

 {
 "setting_type": "call_to_actions"、
 "thread_state": "new_thread"、
 "call_to_actions":
 {
「ペイロード」:「開始」
} 
 
} 
  • APIは結果として以下を提供します:
 {
 "result": "new_threadのCTAが正常に追加されました" 
} 
0
student