Una soluzione migliore a mio parere è quello di utilizzare il Framework Microsoft Bot e usare il suo/FirstRun per inviare il tasto messaggero iniziare
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()
}
Le piattaforme.firstRun si presenta come mostrato di seguito
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')
}
}
Questo a sua volta chiama 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)
])
}
Il platforms.facebook.sendThread appare come illustrato di seguito // Richiama il grafico API di Facebook per modificare le impostazioni 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 })
}
});
})
}
Si noti il facebookTemplates.getStarted(), che in realtà ha il json per iniziare che appare come mostrato di seguito
templates.getStarted = function() {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
Architettura di codice completamente collegabile per l'esecuzione di un'operazione di prima esecuzione su tutte le piattaforme di chatbot. Funziona perfettamente sul mio robot HERE
Fornisci maggiori informazioni su ciò che hai fatto. E cerca prima sul Web per esercitazioni. Ce n'è uno chiamato "Come iniziare con Facebook Messenger Bots". – Galya
Ho seguito la risposta accettata ma non riesco ancora ad avere il pulsante "Inizia" nella schermata di benvenuto. Qualcuno può aiutare? –