Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IBM Cloud Fest Online 2020

motuo1201
December 04, 2020

IBM Cloud Fest Online 2020

Slackと Watson Assistant を連携した事例を紹介します。

motuo1201

December 04, 2020
Tweet

More Decks by motuo1201

Other Decks in Technology

Transcript

  1. WATSON ASSISTANT×SLACK BOT
    WATSON ASSISTANT×SLACK BOT
    でリモートで働く社員を繋ぐ
    でリモートで働く社員を繋ぐ

    View Slide

  2. ⾃⼰紹介
    ⾃⼰紹介
    エンジニアの幸せを⽬指すEC
    特化型スタートアップ、
    株式会社ジョーレンのエンジニア。
    現在は新サービスの企画・営業や、EC-CUBE
    を利⽤したWeb
    アプリケーション開発に従事
    しています。また、Watson
    の開発の容易さとAPI
    の充実ぶりに魅せられ、Watson
    とWeb

    プリを使った連携ツールを作ったりしてます。
    2020
    年 IBM Champion
    。また、IBM Cloud User Group(
    通称:BMXUG)
    運営の⼀員です。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  3. SLACKBOT
    も社員の⼀員!
    SLACKBOT
    も社員の⼀員!
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  4. 弊社で愛される
    SLACKBOT
    弊社で愛される
    SLACKBOT
    弊社には、社員に愛されるSlackbot
    がおります。その名も「加湿さん」! そもそもの由来
    は、オフィス環境が乾かない様に、社員に定期的な加湿器への給⽔をリマインドするもの
    だったのですが、現在は社員の⼼も潤す存在に進化しています。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  5. どれくらい愛でられているかというと、、、
    どれくらい愛でられているかというと、、、
    独⾝男性社員にナンパされてしまうくらいの⼈気ぶりですw
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  6. もちろん
    もちろん
    ⼥性社員からも、それなりに好評の様です。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  7. システム構成
    システム構成
    さて、このSlack
    上での会話ですが、Watson Assistant
    を使って会話を成⽴させています。
    システムのイメージとしてはこの様な感じです。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  8. WATSON

    SLACK
    の連携は
    WATSON

    SLACK
    の連携は
    ノンコーディングでできる!
    ノンコーディングでできる!
    ⼀⾒、どうやってやるの? となりそうですが、連携⾃体はノンコーディングでOK
    です。
    IBM DA
    の⼾倉さんが、
    で紹介しているので参考にしてみてください。
    今回は、Slack
    とWatson Assistant
    が連携している前提で、このbot
    の育て⽅をご紹介しま
    す。
    【Watson×Slack
    】Watson Assistant
    を連携させたSlack bot
    を開発する
    ⽅法 (
    ノンコーディング編)
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  9. ⼿始めの⼀般会話ができるまで
    ⼿始めの⼀般会話ができるまで
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  10. CONTENT CATALOG
    を使って⼀般会話の
    CONTENT CATALOG
    を使って⼀般会話の
    意図を理解できる様にする。
    意図を理解できる様にする。
    Watson Assistant
    を起動して、該当のbot
    を開き、Content Catalog
    を選択します。ここで
    は、「よくある⼀般的なトピック」として⼀般を選択(Add to Skill)
    します。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  11. カタログを選ぶとこうなります。
    カタログを選ぶとこうなります。
    挨拶や、あなたは誰?というIntent
    が⾊々と登録されています。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  12. DIALOG
    で応答を定義する
    DIALOG
    で応答を定義する
    上記で定義されたIntent
    に対して、どの様な返答を返すかはあなた次第です。愛されそう
    な返事を定義しましょう。 Dialog
    を選択して、Add to Node
    を押します。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  13. 回答の定義の仕⽅
    回答の定義の仕⽅
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  14. ここでは、「こんにちは」など、挨拶がされたときの返事を定義しています。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  15. 簡単に会話が定義できます!
    簡単に会話が定義できます!
    これだけで、挨拶されたら挨拶を返すbot
    の完成です。同じ要領で、既にContent Catalog
    で取り込んだIntent
    への返事を定義していきましょう。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  16. ユーザーの⽬的を汲み取って
    ユーザーの⽬的を汲み取って
    返事をしてみる
    返事をしてみる
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  17. 「〜をしたよ!だから、褒めて欲しい」という
    「〜をしたよ!だから、褒めて欲しい」という
    要求に答える
    (ENTITY
    を使う
    )
    要求に答える
    (ENTITY
    を使う
    )
    ある程度、Intent
    を使ったやりとりができてきたそんなある⽇、とある社員が「掃除をし
    たよ!(
    だから褒めて)
    」とbot
    に要求してきました。 この場合、通り⼀辺倒な褒め⾔葉で
    は「愛されるbot
    」にはなれません。「掃除をしたこと」に対する「褒め」を⽤意しまし
    ょう。イメージとしては、こんな感じです。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  18. ENTITY
    を使おう
    ENTITY
    を使おう
    さて、この様に「〜を」というユーザーの「⽬的語」(
    この場合は掃除)
    を捉えるために、
    Watson Assistant
    にはEntity
    という概念があります。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  19. ENTITY
    を定義する
    ENTITY
    を定義する
    Entity → My entities
    から Create entity
    を押して Entity
    の定義をします。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  20. 登録内容は⾄って簡単で、今回の「掃除」がキーワードであれば、それを表しそうな⾔葉
    を⼊れていきましょう。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  21. ENTITY
    を踏まえて
    DIALOG
    で返答を定義する
    ENTITY
    を踏まえて
    DIALOG
    で返答を定義する
    これは少し、コツが必要です。
    「褒めて欲しい」という意図をまずは判定する。
    「褒めて欲しい」という意図をまずは判定する。
    まずは、「褒めて欲しい」という意図(Inent)
    を判定します。ただ、この時点では「何に対
    して」という情報が不⾜しているため、回答が確定できません。この場合は、回答を定義
    せずに、次の処理(Skip User Input and evaluate child nodes)
    とします。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  22. 下記の様なイメージですね。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  23. Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  24. CHILD NODE

    ENTITY
    を判定して適切な答えを返す
    CHILD NODE

    ENTITY
    を判定して適切な答えを返す
    上記のNode
    を選択した状態で、Add Child Node
    を押します。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  25. ここでは、既に「褒めて欲しい」というIntent
    は判定済みですので、Entity
    だけを判定しま
    す。この様なイメージです。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  26. Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  27. これで、ユーザが褒めて欲しい対象によって、
    これで、ユーザが褒めて欲しい対象によって、
    返答を切り替えることができる様になりました。
    返答を切り替えることができる様になりました。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  28. 答えられなかった質問を
    答えられなかった質問を
    教育する。
    教育する。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  29. INTENT

    ENTITY
    の判定を調整する。
    INTENT

    ENTITY
    の判定を調整する。
    愛されてくる様になると、本当に様々なタチの悪い呼びかけがbot
    にされる様になりま
    す。こうすると、Intent
    で判定できなかったり、誤った返答をしてしまうケースが出てき
    ます。これが頻発すると、愛され度も台無しです。
    ということで、回答をメンテナンスしていきます!
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  30. メンテナンスをする
    メンテナンスをする
    Analytics → User Conversations
    で今まで話しかけられた内容に対して、どの様なIntent

    Entity
    と判定したのか⾒ることができます。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  31. 修正⽅法
    修正⽅法
    右側の鉛筆マークをクリックして正しいIntent
    やEntity
    を定義してあげましょう。ちなみ
    に、どのIntent
    にも該当しなった場合は「Irrelevant
    」なります。必要に応じて、新しい
    Intent
    を⽤意してあげましょう。 修正後は、Save
    をクリックしてください。
    これを繰り返すことで、どんどんと、Watson Assistant
    は学習を重ね、ユーザーが喜ぶ返
    事をどんどんと返すことができる様になります。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  32. 答えられなかった時のリアクションも意外と⼤事
    答えられなかった時のリアクションも意外と⼤事
    ちなみに、ちょっと困った⾵の返事をしたりすると、(
    弊社では)
    喜ばれます。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  33. 何にも該当しなかった場合の定義⽅法
    何にも該当しなかった場合の定義⽅法
    この様にするためには、 という判定を活⽤しましょう。これは、どれにも
    当てはまらなかったら、という意図です。何も定義しないと、Intent
    やEntity
    に該当しない
    質問が来た時に、bot
    が黙った様に感じられてしまうので、判定とセットにして忘れずに
    定義しましょう。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  34. FAAS
    を使って、外部とのやりとりをする
    FAAS
    を使って、外部とのやりとりをする
    (
    例:天気予報
    )
    (
    例:天気予報
    )
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  35. 簡単な外部サービスとの連携
    簡単な外部サービスとの連携
    Watson Assistant
    は外部サービスとの連携も⾮常に簡単になりました。天気予報など、予
    め、返答を定義できない問いかけに対して、⾮常に有効です。また、この機能を使えば
    DB
    へ話しかけられた内容を保管する、なんてこともできちゃいます! 今回は、天気予報
    を例に書いていきます。アーキテクチャはこの様なイメージです。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  36. WEBHOOKS
    を設定する
    WEBHOOKS
    を設定する
    Options→Webhooks
    を選択します。ここに呼び出すAPI
    のURL
    やAuthorization
    ヘッダ情報(ID
    やパスワード)
    を定義するだけです。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  37. 定義した
    WEBHOOK

    DIALOG
    から呼び出す
    定義した
    WEBHOOK

    DIALOG
    から呼び出す
    Dialog
    のNode
    の右上の⻭⾞マークをクリックして、Webhooks
    をON
    にする
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  38. 下記の要領で定義をしていきます。
    API
    に渡すパラメータを定義します。(
    今回は天気予報なので、
    Parameter
    にはlocation
    を設定しています。)
    Return variable(
    戻り値の名前)
    を設定します。
    Return variable
    があった時の返事を定義します。今回は下記の様に定義
    しました
    そうですね。。。今⽇の “@location”
    の天気は
    “$webhook_result.response.result.forecast”
    みたいですよ!
    を使って、呼び出しに失敗した時の定義をします。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  39. ダイアログの⾒た⽬
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  40. こうすると、呼び出しに成功した時には以下の様な返答が返ってきます。
    良い感じですね。以前は、Webhook
    の呼び出しはJSON
    で定義しなければ⾏けなかったの
    ですが、、、本当に簡単になりました。
    ちなみに、 で天気予報を取得するときは、IBM Cloud Functions

    利⽤しています。
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  41. 取得コードは下記の通りです。(Node.js)
    /**
    *
    * main() 呼 出 実行
    *
    * @param Cloud Functions 1 受 入
    *
    * @return 出力 出力 JSON
    *
    */
    var request = require('request');
    var main = function(params){
    var options = {
    json:true,
    auth:{
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  42. まとめ
    まとめ
    リモートワークをしていると、ちょっとした雑談相⼿が欲しい時ってありますよね。
    無駄に話しかけることができて、成⻑を感じられるSlackbot
    は、社内のコミュニケーショ
    ンの⼿助けにもなりますし、何よりも機械学習に慣れる良い機会になります!
    IBM Cloud
    はLite Plan
    という永年無料のプランがあり、このプランでも⼗分にSlackbot
    は楽
    しめるので、ぜひ、トライしてみてくださいね!
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ

    View Slide

  43. ありがとうございました!
    ありがとうございました!
    Watson Assistant Slack Bot
    でリモ トで働く社員を繋ぐ
     

    View Slide