Building a Chatbot app on iOS Using Api.AI

Building a Chatbot app on iOS Using Api.AI

How to use Api.ai and JSQMessagesViewController to build a chatbot on iOS. This talk was given at AppCoda Taiwan Developer Meetup 2017.

如何利用Api.ai以及JSQMessagesViewController打造一個AI 聊天機器人

Fae42a323f80bb60e27e7a0d08e19afa?s=128

Simon Ng

March 27, 2017
Tweet

Transcript

  1. 1.
  2. 7.

    關於SIMON • AppCoda創辦人,也是 iOS程式設計師 • 程式教學寫作人,著作包括 《iOS 10 App程式設計實 力超進化實戰攻略》等程式

    開發書籍。 • 熱愛教學,Swift課程導師 • 也熱愛咖啡,夢想有日能開 一間結合程式教學的 AppCoda Cafe
  3. 21.

    無意中發現一位台灣朋友在 Facebook發表他寫的 Handsome Guy魔鏡程式! “Ask mirror who is the most

    handsome guy in the world.” “Of course, Ryan in Taiwan” 超酷喔。 當我正苦惱要說什麼 的時候
  4. 28.
  5. 29.
  6. 30.
  7. 32.

    “Please suggest me a good place to eat.” 自然語言就是我們一般人平常所用的, 如中文、英文,你和我都很自然明白以上問題。

    但是要令機器明白我們的語言, 了解它的意思,這個就不簡單。 而語言的表達方式千變萬化, 以上幾句看似不一樣, 但其實都是想要餐廳建議。
  8. 33.

    “I’m going to meet a friend in Taipei for lunch.

    Any restaurant recommendation?” 自然語言就是我們一般人平常所用的, 如中文、英文,你和我都很自然明白以上問題。 但是要令機器明白我們的語言, 了解它的意思,這個就不簡單。 而語言的表達方式千變萬化, 以上幾句看似不一樣, 但其實都是想要餐廳建議。
  9. 34.

    “Can you recommend a good Taiwanese restaurant for dinner?” 自然語言就是我們一般人平常所用的,

    如中文、英文,你和我都很自然明白以上問題。 但是要令機器明白我們的語言, 了解它的意思,這個就不簡單。 而語言的表達方式千變萬化, 以上幾句看似不一樣, 但其實都是想要餐廳建議。
  10. 36.

    較流行的自然語言處理API Api.ai by Google Wit.ai by Facebook LUIS by Microsoft

    Amazon Lex IBM Watson Natural Language Classifier service
  11. 39.

    “I’m going to meet a friend in Taipei for lunch.

    Any recommendation of a good Taiwanese restaurant?” 當使⽤用者 發問時 送出問題 API.AI自然語言處理的基本運作
  12. 40.

    Api.ai 接收問題 理理解問題,找出問者真正想要什什麼 “I’m going to meet a friend in

    Taipei for lunch. Any recommendation of a good Taiwanese restaurant?” API.AI自然語言處理的基本運作
  13. 45.

    “Do you have a good suggestion for a restaurant in

    Taipei?” 但不是所有使⽤用者也會這樣問問題 “What kind of restaurant do you like? French, Japanese or Taiwanese?” API.AI其中一個功能,就是可以針對 遺漏的資料(如:餐廳類型)再發問
  14. 46.

    API.AI其中一個功能,就是可以針 對遺漏的資料(如:地點)再發問 “Do you have a good suggestion for a

    restaurant” 但不是所有使用者也會這樣問問題 “Where do you prefer to eat? Please be specific and tell me your preferred location.”
  15. 59.

    Response and Action • response.result.fulfillment.speech / / Please give me

    a moment. I will pick a restaurant for you. • response.result.action / / restaurant.recommendation • response.result.parameters • parameters[“food-type”] / / Taiwanese • parameters[“location”] / / Taipei 有了這些資料,就可以在資料庫搜尋相關的餐廳
  16. 63.

    簡單講解一下 import JSQMessagesViewController // 要使⽤用JSQMessagesViewController 的話, 可以建立⼀一個View Controller 並繼承⾃自 JSQMessagesViewController

    class MessagesViewController: JSQMessagesViewController { override func viewDidLoad() { super.viewDidLoad() // 設定 Sender ID以及顯示名字 self.senderId = "simonng" self.senderDisplayName = "Simon Ng" } …… }
  17. 68.