4.1 主動送出歡迎訊息
目前為止,我們製作的對談機器人都會先等使用者輸入訊息後,才去針對訊息的內容處理及回應。如果我們希望在使用者準備要跟對談機器人對話(例如:點開機器人的訊息視窗)時,就主動送出歡迎訊息,也可以順便提示使用者可以怎麼與這個對談機器人對話,這可以透過處理 Bot Framework 定義的事件 (event) 來完成。
處理對話狀態改變的事件
對使用者來說是準備跟機器人對話,但這時對機器人來說則會驅動一個「conversationUpdate」的事件發生,不過很多動作都會觸發這個事件,所以我們必須再藉由別的資訊判斷這個事件的狀態,而若是開始跟機器人對話,會在這個事件中加入聊天者(也就是使用者)的資訊到一個 membersAdded
陣列中,所以我們可以這樣寫:
let bot = new builder.UniversalBot(connector, [
(session) => {
builder.Prompts.choice(session, '您好,我可以幫你做一些事,請問想要我做什麼呢?', ['唱歌', '說笑話', '沒事']);
},
(session, results) => {
session.endDialog(`好的,您選擇的是**${results.response.entity}**`);
}
]);
bot.on('conversationUpdate', (mesage) => {
if (message.membersAdded) {
message.membersAdded.forEach(function (identity) {
if (identity.id === message.address.bot.id) {
bot.beginDialog(message.address, '/');
}
});
}
});
這樣 default dialog 就不會等使用者先輸入訊息才出現,而是一打開與機器人的對話視窗就會開啟 welcome 的對話。
執行的畫面像是這樣: