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 的對話。

執行的畫面像是這樣:

主動送出歡迎訊息並提示使用者可以怎麼操作 bot

參考資源

results matching ""

    No results matching ""