2
3

More than 3 years have passed since last update.

トークルームの roomId を取得する bot

Last updated at Posted at 2019-10-03

LINEWORKS のトーク Bot は accountIdroomId を指定してトークするのですが、roomId を取得する API って、これを書いている今現在ないんですよ。

だから、招待したら roomId を教えてくれる Bot、作っちゃいました!ヾ(´∀`)ノ

1569912743.png

良かったら使ってくださいな。(*‘∀‘)

roomId check bot の登録手順

手順は以下の通りー

  1. GoogleAppsScript で新規スクリプトを作成してライブラリを登録する
  2. コードをコピペする
  3. API ID とか必要な情報を集めてコードに記載する
  4. GoogleAppsScript から roomId check bot を登録する
  5. GoogleAppsScript で作成したスクリプトを公開する

ここまで終われば、あとは roomId の知りたいトークルームに bot を招待するだけ!
では、いってみましょー!(^O^)

GoogleAppsScript で新規スクリプトを作成してライブラリを登録する

既に登録してあるよ!わかってるよ!って方は飛ばしちゃってくださいな!( ゚Д゚)

https://script.google.com/ にアクセスして新規スクリプトを作成します。
スクリプト名はなんでも良いのですが、今回は「roomId check bot」としましょう。

スクリプトができたら、以下の手順で私の作ったライブラリを登録してください。

  1. 「リソース」-「ライブラリ」をクリック
  2. 「ライブラリを追加」の欄に 1aLcCr3CWqfenPMyM0_FWIDUgRcTxsit9bO6BTx61NCXrCtkY2zbHBlod を入力して追加ボタンをクリック
  3. 「LINEWORKS」ライブラリが追加されるので、一番新しいバージョンを選んで保存ボタンをクリック

これで登録完了です。
ちまちま改修しているので、ときどき最新バージョンか確認してくださいねー。

コードをコピペする

以下、GoogleAppsScript に丸々っとコピペしちゃってください。

doPost.js
function doPost(e) {
  if (e == null || e.postData == null || e.postData.contents == null) return;
  const requestJSON = e.postData.contents;
  const requestObj = JSON.parse(requestJSON);
  if(requestObj.type == "join") {
    const roomId = requestObj.source.roomId;
    const msgText = "このルームの ID は " + roomId + " です。\nご利用ありがとうございました。";
    LINEWORKS.sendMsgRoom(getObj, roomId, msgText); 
    LINEWORKS.leaveTalkroom(getObj, roomId);
  }
}
function regRoomIdCheckBot() {
  LINEWORKS.regRoomIdCheckBot(getObj(), "accountId", domainId, "callbackURL");
}
function getObj() {
  return {
    "apiId" : "apiId",
    "consumerKey" : "consumerKey",
    "serverId" : "serverId",
    "privateKey" : "-----BEGIN PRIVATE KEY-----\nprivateKey\n-----END PRIVATE KEY-----",
    "botNo" : null
  }
}

そしたら、apiId とかの必要情報を入力していきます。
サクサクいきますよー(*´Д`)

API ID とか必要な情報を集めてコードに記載する

12行目からの function regRoomIdCheckBot() 内の "accountId" domainId "callbackURL" の 3つを入力してください。
accountId は自分の LINEWORKS アカウントです。
domainId は DeveloperConsole で確認しましょう。(Number 型なのでダブルクォートは不要です)
"callbackURL" は作成したスクリプトを公開すると取得できます。
まだ未完成ですが、あとで内容を更新しても URL は変更されないので先に取得しちゃいます。

スクリプトの公開方法
  1. 「公開」-「ウェブアプリケーションとして導入」をクリック
  2. 出てきた画面で以下の設定をします。
    • プロジェクトバージョン : NEW
    • 次のユーザーとしてアプリケーションを実行 : 自分
    • アプリケーションにアクセスできるユーザー : 全員(匿名ユーザーを含む)
  3. 更新をクリック

このとき、Google からセキュリティの警告が出て許可を求めることがあります。
気にしない人はそのまま許可出しちゃってください。
気になる人は調べてから許可してください。

公開が完了すると「現在のウェブ アプリケーションの URL」が取得できます。
これが "callbackURL" になるので、コードに記載します。

次に、function getObj() 内を埋めていきます。
こちらは全部 DeveloperConsole で確認できるのでドンドン埋めていきます。
認証キー(privateKey)だけは注意が必要で、"-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9...\n-----END PRIVATE KEY-----" となるように \n\n の間に認証キーを入れて一行で表記します。
botNo はこの時点ではわからないので null を入れておきます。

GoogleAppsScript から roomId check bot を登録する

必要事項が入力出来たら、googleappsscript 画面の上部にある「関数を選択」から regRoomIdCheckBot を選んで実行しましょう!
成功すれば、自分の LINEWORKS アカウントに登録成功アナウンスと botNo が送られてきます。
この botNo を先ほどの null を消して記入します。(Number 型なのでダブルクォートは不要です)

注)エラーが出ると中途半端に bot が登録されたりして大変面倒です。
  ID 等単純な入力ミスをすると泣きを見ますよ!見ましたよ!( ノД`)シクシク…

あと、登録は一回だけで良いので、成功したら function regRoomIdCheckBot() は削除しちゃっても構いません。(むしろ、誤爆防止に消しちゃった方がいいかも…?)

GoogleAppsScript で作成したスクリプトを公開する

さっきもやりましたね(*´Д`)
今度こそ完成版を公開してやりましょう!
アイ・イェー!(=゚ω゚)ノ

完成だぜ!

さぁ!トークルームで bot を招待して、自分の roomId を調べましょう!ヾ(´∀`)ノ

1569912743.png

やったね!(^O^)

おわりに

ここまでお付き合いいただきありがとうございました。
スクショとか入れたらもっと丁寧になると思うのですが、ついつい文章だけになってしまう。。。
頑張って時間作って追加していきたいと思いますまる。

次は何を書こうかな~。
ではまた!(^^)/

参考にさせていただきましたm(_ _)m

GoogleAppsScript 公式サイト
LINEWORKS Developers

2
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3