SalesforceからLineworksに通知を送ろうと思った話(構築編)


SalesforceからLineworksに通知を送信する

Salesforceで承認プロセスを作るにあたり、その通知をメールだけではなく、Lineworksにも送りたいと思ったので、その時に参考にした情報を記載していきます。

設計概要

すごくざっくりした概要図ですが、こんな感じで構築することにしました。

進め方

ネットで調べたら以前TerakoyaforceでLineworks連携の紹介をしていたのでこちらの記事を参考にして構築しました。
https://terakoyaforce.connpass.com/event/106960/

2年前の記事なので手順書通り進めるといくつかうまくいかないケースに当たります。
そこでSalesforceでデバッグログを有効にして、出力されたログを見ながら修正していきます。
LineworksのAPIリファレンスを参考にしながらトークBotの登録から、メッセージ送信のRequest URLや、Requestのパラメータ、Responseの処理を修正していきます。

その過程で今後の機能改修に必要な知識も入ってくるので直し切ってしまうことをおススメします。

バグだけ潰せばいいなら、以下を修正すればうまくいきます。

LW_Utils.cls
//19行目
//public static String LW_REGIST_BOT_TENANT_URI = 'https://apis.worksmobile.com/'+ API_ID+'/message/registerBot/v4';
public static String LW_REGIST_BOT_TENANT_URI = 'https://apis.worksmobile.com/r/'+ API_ID+'/message/v1/bot';
LW_BotEntryController.cls
//30行目
//bots.put('managerList', manageUser);
bots.put('managers', manageUser); 

//45行目
//if( (Integer)botRes.getStatusCode() != 200 ){
if( (Integer)botRes.getStatusCode() != 200 ){

実装が終わると、SalesforceのChatterにメンション付きで投稿されるとこんな感じでLineworksにも通知がされます。

※今回は承認プロセスから、Chatter投稿しているので、その承認リンクが送信されるように別途設定しています。

実装後フロー図

最終的にはこんな感じの動作になりました。
例外処理は実際はもっと多いですが全体像だけ。

最後に

この話にはオチがあります…
ぜひこちらの記事もご覧ください!
https://note.com/iitsuki/n/n616afab7556b