a încercat cerere trimiterea la această adresă URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Dar nu a funcționat.
a încercat cerere trimiterea la această adresă URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
Dar nu a funcționat.
trebuie să executați o comandă de buclă corespunzătoare pentru a configura. verifica acest link afară și uita - te la exemplul lor. https://developers.facebook.com/docs/messenger-platform/implementation#send_api
Vă mulțumim pentru comentarii valoroase, după ce unele workaround a găsit această soluție de lucru, conform ghidurilor de facebook
trebuie să trimită o cerere POST independent la această adresă URL doar o singura data
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
poștaș folosit pentru a trimite astfel de solicitări
aici
Dacă butonul Începeți a fost configurat cu succes, veți primi următorul răspuns
{
"result": "Successfully added new_thread's CTAs"
}
Efectuarea unui apel POST API organism JSON ca mai jos.
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"
O soluție mai bună, în opinia mea este de a utiliza Microsoft cadru Bot și utilizarea acestuia / firstRun pentru a trimite butonul mesager a începe
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()
}
Platforms.firstRun arată așa cum este prezentat mai jos
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')
}
}
Aceasta, la rândul său, solicită 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)
])
}
Platforms.facebook.sendThread pare așa cum se arată mai jos // Apeleaza Facebook graficului api pentru a modifica setările 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 })
}
});
})
}
Observați facebookTemplates.getStarted (), care are de fapt JSON pentru a începe care arată așa cum este prezentat mai jos
templates.getStarted = function () {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
Arhitectura cod Complet conectabile pentru efectuarea unei prime operații rula pe toate platformele chatbot. Funcționează perfect pe bot meu AICI
Este posibil să fi setat cu succes, dar nu-l văd pentru că ai deja o conversație existentă cu pagina de facebook.
După setarea cu succes „Get Started“ firul, veți vedea numai dacă ștergeți firul de conversație existent și a începe unul nou.
Începeți buton este afișat numai atunci când interacționează cu pagina de Facebook pentru prima dată, așa că, dacă ați anunțat deja pagina, nu veți putea vedea „Get Started“ dacă nu ștergeți firul de la clientul dvs. Facebook Messenger ( fie mobil sau desktop).
Există anumite condiții pentru a vedea ecranul de bun venit și butonul Începeți:
- Acestea sunt redate doar prima dată când utilizatorul interacționează cu pagina pe Messenger
- Numai adminii / dezvoltatori / testeri ale aplicației poate vedea atunci când aplicația este în modul de dezvoltare
- Aplicația trebuie să fie abonat la postbacks pe webhook dvs.
Există o bibliotecă în NPM care se infasoara funcționalitatea POST / DELETE Acțiuni aici: 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
Formatul actual este, https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{ "Get_started": { "payload": "GET_STARTED_PAYLOAD"}}
În cazul nostru, următoarele lucrat:
Hit thread_settingsAPI
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>
A trecut proba următoare JSON
{
"setting_type": "call_to_actions",
"Thread_state": "new_thread",
"call_to_actions": [
{
"Sarcină utilă": "Start"
}
]
}
{
„Rezultat“: „îndemnuri adăugat cu succes new_thread lui“
}
Trimite o cerere poștal utilizând pagina de acces jeton
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
cu următoarele date
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Facebok Documente: Începeți buton
Sper ca această nouă metodă de a rezolva problema. Nu uitați să ștergeți mesajele trimise mai întâi folosind Facebook Web pentru a vedea un buton în acțiune.
Soluție foarte simplă, trebuie doar deschis în terminal și du - te la locația dvs. dosarul gazdă, (în mină /var/www/html/booking/public/facebookbot) și inserați codul de mai jos:
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"
și apăsați enter, asigurați-vă că pentru a pune token-ul de acces corect, de asemenea, s-ar putea recunoaște atunci când butonul de la început de drum presat sarcină utilă care este GET_STARTED_PAYLOAD în proba de cod de mai sus.