Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IBM Cloud Fest Online 2020
Search
Yosuke Enomoto
December 04, 2020
Technology
0
750
IBM Cloud Fest Online 2020
Slackと Watson Assistant を連携した事例を紹介します。
Yosuke Enomoto
December 04, 2020
Tweet
Share
More Decks by Yosuke Enomoto
See All by Yosuke Enomoto
ドクターメイトエンジニアカルチャーブック
motuo1201
0
82
もう話すことに困らない! カジュアル面談の “型” 全部見せ
motuo1201
0
360
CROSS Party online 2022 ~自重トレ~
motuo1201
0
390
IoT LT Vol7 LT
motuo1201
0
220
IBM Championが考えるアプリケーション基盤の勘所
motuo1201
0
200
社内定例LT1回目の資料
motuo1201
0
110
codewindで実現!簡単コンテナ開発
motuo1201
0
580
Watson Assistant×Slack Botがリモートで働く社員を繋ぐ
motuo1201
0
580
codewindで実現!簡単コンテナ開発
motuo1201
2
780
Other Decks in Technology
See All in Technology
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
0
280
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
470
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
13
3.6k
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
220
生成AIのガバナンスの全体像と現実解
fnifni
1
180
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.2k
Qiita埋め込み用スライド
naoki_0531
0
860
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
1
270
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
C++26 エラー性動作
faithandbrave
2
700
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Statistics for Hackers
jakevdp
796
220k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Code Review Best Practice
trishagee
65
17k
Designing Experiences People Love
moore
138
23k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
How GitHub (no longer) Works
holman
311
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Transcript
WATSON ASSISTANT×SLACK BOT WATSON ASSISTANT×SLACK BOT でリモートで働く社員を繋ぐ でリモートで働く社員を繋ぐ
⾃⼰紹介 ⾃⼰紹介 エンジニアの幸せを⽬指すEC 特化型スタートアップ、 株式会社ジョーレンのエンジニア。 現在は新サービスの企画・営業や、EC-CUBE を利⽤したWeb アプリケーション開発に従事 しています。また、Watson の開発の容易さとAPI
の充実ぶりに魅せられ、Watson とWeb ア プリを使った連携ツールを作ったりしてます。 2020 年 IBM Champion 。また、IBM Cloud User Group( 通称:BMXUG) 運営の⼀員です。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
SLACKBOT も社員の⼀員! SLACKBOT も社員の⼀員! Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
弊社で愛される SLACKBOT 弊社で愛される SLACKBOT 弊社には、社員に愛されるSlackbot がおります。その名も「加湿さん」! そもそもの由来 は、オフィス環境が乾かない様に、社員に定期的な加湿器への給⽔をリマインドするもの だったのですが、現在は社員の⼼も潤す存在に進化しています。 Watson
Assistant Slack Bot でリモ トで働く社員を繋ぐ
どれくらい愛でられているかというと、、、 どれくらい愛でられているかというと、、、 独⾝男性社員にナンパされてしまうくらいの⼈気ぶりですw Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
もちろん もちろん ⼥性社員からも、それなりに好評の様です。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
システム構成 システム構成 さて、このSlack 上での会話ですが、Watson Assistant を使って会話を成⽴させています。 システムのイメージとしてはこの様な感じです。 Watson Assistant Slack
Bot でリモ トで働く社員を繋ぐ
WATSON と SLACK の連携は WATSON と SLACK の連携は ノンコーディングでできる! ノンコーディングでできる!
⼀⾒、どうやってやるの? となりそうですが、連携⾃体はノンコーディングでOK です。 IBM DA の⼾倉さんが、 で紹介しているので参考にしてみてください。 今回は、Slack とWatson Assistant が連携している前提で、このbot の育て⽅をご紹介しま す。 【Watson×Slack 】Watson Assistant を連携させたSlack bot を開発する ⽅法 ( ノンコーディング編) Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
⼿始めの⼀般会話ができるまで ⼿始めの⼀般会話ができるまで Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
CONTENT CATALOG を使って⼀般会話の CONTENT CATALOG を使って⼀般会話の 意図を理解できる様にする。 意図を理解できる様にする。 Watson Assistant
を起動して、該当のbot を開き、Content Catalog を選択します。ここで は、「よくある⼀般的なトピック」として⼀般を選択(Add to Skill) します。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
カタログを選ぶとこうなります。 カタログを選ぶとこうなります。 挨拶や、あなたは誰?というIntent が⾊々と登録されています。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
DIALOG で応答を定義する DIALOG で応答を定義する 上記で定義されたIntent に対して、どの様な返答を返すかはあなた次第です。愛されそう な返事を定義しましょう。 Dialog を選択して、Add to
Node を押します。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
回答の定義の仕⽅ 回答の定義の仕⽅ Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ここでは、「こんにちは」など、挨拶がされたときの返事を定義しています。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
簡単に会話が定義できます! 簡単に会話が定義できます! これだけで、挨拶されたら挨拶を返すbot の完成です。同じ要領で、既にContent Catalog で取り込んだIntent への返事を定義していきましょう。 Watson Assistant Slack
Bot でリモ トで働く社員を繋ぐ
ユーザーの⽬的を汲み取って ユーザーの⽬的を汲み取って 返事をしてみる 返事をしてみる Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
「〜をしたよ!だから、褒めて欲しい」という 「〜をしたよ!だから、褒めて欲しい」という 要求に答える (ENTITY を使う ) 要求に答える (ENTITY を使う )
ある程度、Intent を使ったやりとりができてきたそんなある⽇、とある社員が「掃除をし たよ!( だから褒めて) 」とbot に要求してきました。 この場合、通り⼀辺倒な褒め⾔葉で は「愛されるbot 」にはなれません。「掃除をしたこと」に対する「褒め」を⽤意しまし ょう。イメージとしては、こんな感じです。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ENTITY を使おう ENTITY を使おう さて、この様に「〜を」というユーザーの「⽬的語」( この場合は掃除) を捉えるために、 Watson Assistant にはEntity
という概念があります。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ENTITY を定義する ENTITY を定義する Entity → My entities から Create
entity を押して Entity の定義をします。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
登録内容は⾄って簡単で、今回の「掃除」がキーワードであれば、それを表しそうな⾔葉 を⼊れていきましょう。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ENTITY を踏まえて DIALOG で返答を定義する ENTITY を踏まえて DIALOG で返答を定義する これは少し、コツが必要です。 「褒めて欲しい」という意図をまずは判定する。
「褒めて欲しい」という意図をまずは判定する。 まずは、「褒めて欲しい」という意図(Inent) を判定します。ただ、この時点では「何に対 して」という情報が不⾜しているため、回答が確定できません。この場合は、回答を定義 せずに、次の処理(Skip User Input and evaluate child nodes) とします。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
下記の様なイメージですね。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
CHILD NODE で ENTITY を判定して適切な答えを返す CHILD NODE で ENTITY を判定して適切な答えを返す
上記のNode を選択した状態で、Add Child Node を押します。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ここでは、既に「褒めて欲しい」というIntent は判定済みですので、Entity だけを判定しま す。この様なイメージです。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
これで、ユーザが褒めて欲しい対象によって、 これで、ユーザが褒めて欲しい対象によって、 返答を切り替えることができる様になりました。 返答を切り替えることができる様になりました。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
答えられなかった質問を 答えられなかった質問を 教育する。 教育する。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
INTENT や ENTITY の判定を調整する。 INTENT や ENTITY の判定を調整する。 愛されてくる様になると、本当に様々なタチの悪い呼びかけがbot にされる様になりま
す。こうすると、Intent で判定できなかったり、誤った返答をしてしまうケースが出てき ます。これが頻発すると、愛され度も台無しです。 ということで、回答をメンテナンスしていきます! Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
メンテナンスをする メンテナンスをする Analytics → User Conversations で今まで話しかけられた内容に対して、どの様なIntent や Entity と判定したのか⾒ることができます。
Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
修正⽅法 修正⽅法 右側の鉛筆マークをクリックして正しいIntent やEntity を定義してあげましょう。ちなみ に、どのIntent にも該当しなった場合は「Irrelevant 」なります。必要に応じて、新しい Intent を⽤意してあげましょう。
修正後は、Save をクリックしてください。 これを繰り返すことで、どんどんと、Watson Assistant は学習を重ね、ユーザーが喜ぶ返 事をどんどんと返すことができる様になります。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
答えられなかった時のリアクションも意外と⼤事 答えられなかった時のリアクションも意外と⼤事 ちなみに、ちょっと困った⾵の返事をしたりすると、( 弊社では) 喜ばれます。 Watson Assistant Slack Bot でリモ
トで働く社員を繋ぐ
何にも該当しなかった場合の定義⽅法 何にも該当しなかった場合の定義⽅法 この様にするためには、 という判定を活⽤しましょう。これは、どれにも 当てはまらなかったら、という意図です。何も定義しないと、Intent やEntity に該当しない 質問が来た時に、bot が黙った様に感じられてしまうので、判定とセットにして忘れずに 定義しましょう。
Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
FAAS を使って、外部とのやりとりをする FAAS を使って、外部とのやりとりをする ( 例:天気予報 ) ( 例:天気予報 )
Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
簡単な外部サービスとの連携 簡単な外部サービスとの連携 Watson Assistant は外部サービスとの連携も⾮常に簡単になりました。天気予報など、予 め、返答を定義できない問いかけに対して、⾮常に有効です。また、この機能を使えば DB へ話しかけられた内容を保管する、なんてこともできちゃいます! 今回は、天気予報 を例に書いていきます。アーキテクチャはこの様なイメージです。
Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
WEBHOOKS を設定する WEBHOOKS を設定する Options→Webhooks を選択します。ここに呼び出すAPI のURL やAuthorization ヘッダ情報(ID やパスワード)
を定義するだけです。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
定義した WEBHOOK を DIALOG から呼び出す 定義した WEBHOOK を DIALOG から呼び出す
Dialog のNode の右上の⻭⾞マークをクリックして、Webhooks をON にする Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
下記の要領で定義をしていきます。 API に渡すパラメータを定義します。( 今回は天気予報なので、 Parameter にはlocation を設定しています。) Return variable( 戻り値の名前)
を設定します。 Return variable があった時の返事を定義します。今回は下記の様に定義 しました そうですね。。。今⽇の “@location” の天気は “$webhook_result.response.result.forecast” みたいですよ! を使って、呼び出しに失敗した時の定義をします。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ダイアログの⾒た⽬ Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
こうすると、呼び出しに成功した時には以下の様な返答が返ってきます。 良い感じですね。以前は、Webhook の呼び出しはJSON で定義しなければ⾏けなかったの ですが、、、本当に簡単になりました。 ちなみに、 で天気予報を取得するときは、IBM Cloud Functions を
利⽤しています。 Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
取得コードは下記の通りです。(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 でリモ トで働く社員を繋ぐ
まとめ まとめ リモートワークをしていると、ちょっとした雑談相⼿が欲しい時ってありますよね。 無駄に話しかけることができて、成⻑を感じられるSlackbot は、社内のコミュニケーショ ンの⼿助けにもなりますし、何よりも機械学習に慣れる良い機会になります! IBM Cloud はLite Plan
という永年無料のプランがあり、このプランでも⼗分にSlackbot は楽 しめるので、ぜひ、トライしてみてくださいね! Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ
ありがとうございました! ありがとうございました! Watson Assistant Slack Bot でリモ トで働く社員を繋ぐ