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
75
もう話すことに困らない! カジュアル面談の “型” 全部見せ
motuo1201
0
350
CROSS Party online 2022 ~自重トレ~
motuo1201
0
380
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
570
codewindで実現!簡単コンテナ開発
motuo1201
2
770
Other Decks in Technology
See All in Technology
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
300
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
180
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
複雑なState管理からの脱却
sansantech
PRO
1
140
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Faster Mobile Websites
deanohume
305
30k
Being A Developer After 40
akosma
86
590k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
What's in a price? How to price your products and services
michaelherold
243
12k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Practical Orchestrator
shlominoach
186
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Code Reviewing Like a Champion
maltzj
520
39k
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 でリモ トで働く社員を繋ぐ