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

IBM Cloud Fest Online 2020

IBM Cloud Fest Online 2020

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

Yosuke Enomoto

December 04, 2020
Tweet

More Decks by Yosuke Enomoto

Other Decks in Technology

Transcript

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

    の充実ぶりに魅せられ、Watson とWeb ア プリを使った連携ツールを作ったりしてます。 2020 年 IBM Champion 。また、IBM Cloud User Group( 通称:BMXUG) 運営の⼀員です。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  2. WATSON と SLACK の連携は WATSON と SLACK の連携は ノンコーディングでできる! ノンコーディングでできる!

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

    を起動して、該当のbot を開き、Content Catalog を選択します。ここで は、「よくある⼀般的なトピック」として⼀般を選択(Add to Skill) します。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  4. 「〜をしたよ!だから、褒めて欲しい」という 「〜をしたよ!だから、褒めて欲しい」という 要求に答える (ENTITY を使う ) 要求に答える (ENTITY を使う )

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

    entity を押して Entity の定義をします。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  6. ENTITY を踏まえて DIALOG で返答を定義する ENTITY を踏まえて DIALOG で返答を定義する これは少し、コツが必要です。 「褒めて欲しい」という意図をまずは判定する。

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

    上記のNode を選択した状態で、Add Child Node を押します。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  8. INTENT や ENTITY の判定を調整する。 INTENT や ENTITY の判定を調整する。 愛されてくる様になると、本当に様々なタチの悪い呼びかけがbot にされる様になりま

    す。こうすると、Intent で判定できなかったり、誤った返答をしてしまうケースが出てき ます。これが頻発すると、愛され度も台無しです。 ということで、回答をメンテナンスしていきます! Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  9. 修正⽅法 修正⽅法 右側の鉛筆マークをクリックして正しいIntent やEntity を定義してあげましょう。ちなみ に、どのIntent にも該当しなった場合は「Irrelevant 」なります。必要に応じて、新しい Intent を⽤意してあげましょう。

    修正後は、Save をクリックしてください。 これを繰り返すことで、どんどんと、Watson Assistant は学習を重ね、ユーザーが喜ぶ返 事をどんどんと返すことができる様になります。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  10. 定義した WEBHOOK を DIALOG から呼び出す 定義した WEBHOOK を DIALOG から呼び出す

    Dialog のNode の右上の⻭⾞マークをクリックして、Webhooks をON にする Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  11. 下記の要領で定義をしていきます。 API に渡すパラメータを定義します。( 今回は天気予報なので、 Parameter にはlocation を設定しています。) Return variable( 戻り値の名前)

    を設定します。 Return variable があった時の返事を定義します。今回は下記の様に定義 しました そうですね。。。今⽇の “@location” の天気は “$webhook_result.response.result.forecast” みたいですよ! を使って、呼び出しに失敗した時の定義をします。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ 
  12. 取得コードは下記の通りです。(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 でリモ トで働く社員を繋ぐ 