LINEWORKS Advent Calendar 2019 の 5日目を担当させていただきます!
どうぞよろしくおねがいしますm(_ _)m
最近見つけた、ちょっとした小ネタを紹介しますね~。
トーク Bot とのトークルームをたくさん作る
タイトルの通りなのですが、トーク Bot とのトークルームをたくさん作ります。
つまり、こんな感じ。
仕組みとしては単純です。
1:1トークルームではなくて、Bot と2人きりの1:N トークルームを作っているだけです。
なので、この方法を使うときは DeveloperConsole で Bot の Bot ポリシーの「複数人のトークルームに招待可」に必ずチェックを入れておいてくださいね(*'▽')
Bot とのトークルームの作り方
トークルームの作り方はみなさんご存じだと思いますので、さささっと説明しちゃいますが、
トーク画面の左上の追加ボタンを押すと Bot を招待することができます。
このとき、Bot を1つしか選ばないと1:1のトークルームになってしまうので、別の Bot も一緒に招待します。
それで、1:N のトークルームが出来上がったらいらない方の Bot をトークルームから退出させます!
('Д')ドイヒー
そうすると Bot 二人きりのトークルームになるので、これを繰り返すと Bot とのトークルームをたくさん作ることができます。
( ^ω^)・・・うん、めんどくさいですね!
API を使って、Bot とのトークルームをたくさん作る
面倒なことは自動でやれるようにすればいいのです。
Bot を含むトークルーム作成 API と メッセージ送信 API を駆使して一気に作っちゃいましょう!(^^)/
node.js でのコードになります。
あらかじめ request-promise
モジュールをインストールしておいてくださいませ。
> npm install request-promise
API ID などの Key はご自身のものを入力してください。
const request = require("request-promise");
const apiId = "API ID";
const botNo = "部屋をいっぱい作りたい Bot の botNo";
const headers = {
Authorization: "Bearer " + "Token",
consumerKey: "consumerKey",
"Content-Type": "application/json"
};
const url = "https://apis.worksmobile.com/r/" + apiId + "/message/v1/bot/" + botNo;
const titles = [ "room A", "room B", "room C", "room D", "room E"];
titles.forEach((title) => {
let options = {
url: url + "/room",
headers: headers,
json: {
accountIds: [ "accountId" ],
title: title
}
};
request.post(options).then((body) => {
let options = {
url: url + "/message/push",
headers: headers,
json: {
roomId: body.roomId,
content: { type: "text", text: "To " + title }
}
};
request.post(options).catch((error) => { throw new Error(error) });
}).catch((error) => { throw new Error(error) });
});
トークルーム名は 11 行目の titles
に格納されています。
titles
の要素を増やせばいくらでもトークルームを作ることが可能です!ヾ(´∀`)ノ
トークルームをたくさん作ることによってできること
言っておいてなんなのですが、あまり思いつきませんね。。。
ルームを分けるということは、処理によって対応を分ける必要があるということだと思うのですけど、それなら Bot を複数作った方がわかりやすいですよね。
Bot の利用範囲の制限もできるし、メンバーのメンテナンスも LINEWORKS のメンバー管理と紐づけられるし。
ひとつだけ思いついたのは、外部ユーザへの問い合わせ対応的なものでしょうか?
外部ユーザとのトークルームには LINEWORKS Bot を招待できないので。
例えば、LINE 公式アカウントにトークすると担当者の LINEWORKS に専用トークルームが作られて、そこへトークされる。
そのトークルームに担当者が返事を書くと、LINE 公式アカウントが LINE ユーザに返事をする。
みたいな?
- LINE ユーザは LINE 公式アカウントへ話しかける
- LINE 公式アカウントへのトーク内容を LINEWORKS Bot が LINEWROKS 担当者へトークする
- そのとき、個別のトークルームにトークする(例:ユーザ A のトークはルーム A に送信)
- LINE の userId と LINEWORKS の roomId を紐づかせて保持しておく
- 個別のトークルームでのトークは紐づいた LINE ユーザへ送信される(例:ルーム A のトークはユーザ A に送信)
メリットとしては、担当者の匿名性が保てることでしょうか。
あとは、担当者が複数居た場合に、誰が返事をしても公式アカウントからの返答になることですかね。
んー、どんなシチュエーションですかね。
この仕組みでサービスとして実現できたら、ぜひ教えてくださいm(_ _)m
#おわりに
ここまでお付き合いいただきありがとうございました。
そして、LINEWORKS Advent Calendar 2019 の 5日目として参加させていただきありがとうございました。
Advent Calendar の後半、まだ空いてるから今回の仕組み、作ってみようかな~。
間に合わないから無理かな~( ゚Д゚)
ではまた!(^^)/
#参考にさせていただきましたm(_ _)m
LINEWORKS Developers