Robotic CrowdからLINEに完了通知する
前回書いたnoteではLINEからRPAを起動することに成功した話をしました。
「LINE→RPA実行」がクリアできたなら「RPA→LINE」の完了通知も実装したい。LINE botのプッシュ通知を使えばたぶんできるだろうという曖昧な感じで始めてみました。
結論から言うと「HTTPRequest」のアクションを使ってプッシュ通知を送ります。
1.プッシュ通知を送るために必要な情報の収集
ドキュメントを参考に必要な情報を探してみるとPUSH通知を送るためには下記の情報が必要です。
・URL(https://api.line.me/v2/bot/message/push)
・誰に送るのか?(to)
・送るメッセージ(messages)
特に2つ目に書いた誰に送るのか?の情報を取得することには少し苦心しましたが、LINE→GASで送信されるデータの中から送信者のユーザーIDを取得することができるようでした。
2.Robotic Crowd APIで変数を定義
Session QueueのAPIではparamsとして変数を定義して、Robotic Crowdに引き継ぐことができます。
参考:https://developer.roboticcrowd.com/#session-queue
var json = JSON.parse(e.postData.contents);
var line_User_Id = json.events[0].source.userId;
var body = {
workflow_id: 1111,
params: {
api_storeValue: line_User_Id
}
}
bodyの中に上記のようにparamsを付け足します。
Robotic Crowd側では「api_storeValue」という変数名を定義する必要がなくなります。
※但し、RPA単体で動かすと変数が未定義の状態なので必ずエラー発生。
この機能を活用して、LINEから送られてきたユーザー情報を変数としてRobotic Crowdに渡すことができます。つまり、同じLINE botから毎回違うユーザーがRPAを起動しても起動したユーザーだけにプッシュ通知を送ることができるようになります。
今回必要な情報はLINEのユーザーIDだけなので変数を1つしか定義していませんが、複数の変数を定義する場合にはparamsの中はこんな感じになります。
params: {
array: ["配列","です"],
hoge: "文字です"
}
GASで定義した変数名をRobotic Crowdのワークフロー設定に書き込むとこんな感じ。(わかりやすく変数に保存にしているけど他のアクションでもOK)
*実際に実行してみたログ*
ちゃんとLINEのユーザーIDがRobotic Crowdまで送られてきた。素晴らしい・・・
3.Robotic Crowdからプッシュ通知を送る設定
基本的な手順はGASでAPIを叩いた時と同様です。
ヘッダーとボディーを設定して、POSTします。
①ヘッダーの設定
Content-TypeとTokenを設定しています。
②ボディーの設定
プッシュ通知の本文内容です。ボタンとかも作れるっぽい(まだうまくいってないけど)。見やすくするためにスクリプトを実行でJSONを作成して変数「body」に保存しています。
③HTTPRequestの実行
①と②で生成したヘッダーとボディーを「https://api.line.me/v2/bot/message/push」にPOSTします。
*実行結果*
このような形でちゃんとRPAの実行完了通知が届きました。
別のユーザーが実行すればちゃんと実行者にだけ通知が行きます。
4.まとめ
①LINEユーザーIDを取得する
②Robotic Crowd APIで変数を渡す
③ワークフローからLINE APIを叩く
おおよその手順としてはこの流れでRPAの完了通知を実装することができました。
いや、APIでRPA側に未定義の変数を渡せるのは素直に感動しました。極論RPAの中で定義している変数を全部GASでやってしまえばかなりフローの削減とかもできそう・・・🤔
元々このプッシュ通知もユーザーIDをスプレッドシートに書き出して、ユーザーリストを作って、リスト内を検索して・・・みたいなちょっと回りくどいフローで実現しようとしていたんですけど、全部不要でしたね。
この機能に気づいてよかった。よかった。
この記事が気に入ったらサポートをしてみませんか?