第12 屆iT邦幫忙鐵人賽系列文章 (Day13)

Chatbot 有分為兩種類型,一個是任務型導向,另一個是聊天型導向,聊天型導向最典型的就是 Siri,講什麼他都會回答你,這背後所支撐的是海量數據訓練出來的,在我們設計應用 Chatbot 時,多半會偏向任務型導向,使用者用你的 Chatbot 不是要跟你聊天,是要快速的用你這服務達到任務,所以在設計時,如果定位 Chatbot 是 “人” ,是非常可怕的設計,只會降低使用者的觀感。

在設計 Line Chatbot 時,如果使用者在對話過程中迷路了,不妨設計一些快捷鍵引導到他的目標吧,這個在 Line 裡面實作叫 Quick Reply,我們今天將做在無法辨識使用者的意圖時,回傳一些引導的快捷鍵

IntenFactory.cs

之前有設定一個 DefaultIntent.cs 我們將修改這個實作

當聽不懂的時候 回傳三個快捷鍵

    public async Task ReplyAsync(string replyToken)

    {

    if (!string.IsNullOrEmpty(replyText))

    {

    await lineMessageUtility.ReplyMessageAsync(replyToken, replyText);

    }

    else

    {

    // 回傳歡迎詞

    var unknow = new TextMessage() { Text = $@"不好意思,我不太清楚您的意思,或許你可以用下列快速鍵 (僅支援手機)" };

    // Quick Reply

    unknow.QuickReply = new QuickReply();

    unknow.QuickReply.Items.Add(new QuickReplyItem()

    {

    action = new MessageAction("電子喜帖"),

    });

    unknow.QuickReply.Items.Add(new QuickReplyItem()

    {

    action = new MessageAction("婚紗輪播"),

    });

    unknow.QuickReply.Items.Add(new QuickReplyItem()

    {

    action = new MessageAction("交通資訊"),

    });

    await lineMessageUtility.ReplyMessageAsync(replyToken, new List<IMessage> {

    unknow

    });

    }

    }

TextMessage 要多一個 QuickReply 的屬性

    public class QuickReply

    {

    public List<QuickReplyItem> Items = new List<QuickReplyItem>();

    }

    public class QuickReplyItem

    {

    public string type => "action";

    public string imageUrl { get; set; }

    public IAction action { get; set; }

    }

實作效果

懶人包,本次學到了什麼?