próbált kérés küldése e url
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
De nem működött.
próbált kérés küldése e url
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
De nem működött.
meg kell futtatni egy megfelelő curl parancsot beállítani. ellenőrizze ezt a linket, és nézd meg a példájukat. https://developers.facebook.com/docs/messenger-platform/implementation#send_api
köszönhetően az értékes észrevételeit, miután néhány megoldás találtam ezt a megoldást dolgozó, mint egy facebook iránymutatások
kell küldeni egy független POST kérést ennek az URL csak egyszer
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
használt postás küldeni ilyen kérést
ide
Ha az Első lépések gomb sikeresen beállította, akkor kap a következő válasz
{
"result": "Successfully added new_thread's CTAs"
}
Készíts egy POST hívás API JSON szerv az alábbiak szerint.
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"
Jobb megoldás véleményem az, hogy a Microsoft Bot keretrendszer és használja ki / firstRun küldeni a messenger kezdéshez gombra
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()
}
A platforms.firstRun alábbiak szerint néz ki
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')
}
}
Ez viszont felhívja 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)
])
}
A platforms.facebook.sendThread alábbiak szerint néz ki // felhívja a Facebook Graph API-beállításokat módosítani bot
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 })
}
});
})
}
Figyeljük meg a facebookTemplates.getStarted (), hogy valójában a JSON az induláshoz, ami úgy néz ki, az alábbiak szerint
templates.getStarted = function () {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
Teljesen dugaszolható kód építészet elvégzésére első kísérletben művelet minden chatbot platformon. Tökéletesen működik az én bot ITT
Lehetőség van meg azt sikeresen, de nem látta, mert már van egy meglévő beszélgetés a facebook oldalon.
Miután sikeresen beállította a „Get Started” menet, akkor csak azt, ha törli a meglévő beszélgetésláncba és újat kezdeni.
A kezdéshez nyomógomb csak akkor látható, ha be van kölcsönhatásban a facebook oldalon az első alkalommal, így ha korábban már értesítettük az oldalt, akkor nem fogja látni a „Get Started”, ha nem törli a szál a Facebook Messenger ( akár mobil vagy asztali).
Vannak bizonyos feltételek látva a üdvözlőképernyőt és az Első lépések gomb:
- Ezeket csak a renderelt először a felhasználó használja az oldalt Messenger
- Csak adminok / fejlesztők / tesztelők az alkalmazás láthatja, ha az alkalmazás a fejlesztési mód
- Az app kell feliratkozott postbacks a webhook
Van egy könyvtár NPM hogy becsomagolja a funkcionalitás a POST / törlési műveletek itt: 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
A jelenlegi formátum, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{ "Get_started": { "hasznos teher": "GET_STARTED_PAYLOAD"}}
Esetünkben a következő dolgozott:
Hit a thread_settingsAPI
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>
Telt az alábbi minta JSON
{
"Setting_type": "call_to_actions"
"Thread_state": "new_thread"
"Call_to_actions": [
{
"Rakomány": "Start"
}
]
}
{
„Eredmény”: „Sikeresen hozzáadott new_thread a CTA-k”
}
Küldj egy bejegyzést kérelmet az oldal használatát hozzáférési token
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
A következő adatok
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Facebok Docs: Kezdés gomb
Remélem, ez az új módszer megoldja a problémát. Ne felejtsd el törölni az elküldött üzeneteket először a Facebookon Web látni gomb akcióban.
Nagyon egyszerű megoldás, csak nyitott terminál, és menjen a host mappa helyét, (az én /var/www/html/booking/public/facebookbot), és illessze be az alábbi kódot:
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"
és nyomjuk meg, győződjön meg róla, hogy tegye a helyes hozzáférési tokent is lehet felismerni, ha a kezdetekhez gombot megnyomták hasznos mely GET_STARTED_PAYLOAD a fenti kódot mintában.