「LINE×Salesforce」システム構成のはなし

こんにちは。SMSCのエンジニアです。

先日(2018.02.16)、LINEの開発者向けCommunityサイトがオープンされました。
現在のところ、LINEで利用できるChatbotのショーケースである「Bot Directory」と、開発ノウハウを蓄積・検索するための「Q&A」を提供しているようです。
こういう動きは、エンジニアにとって、刺激になるし、いい情報源にもなるので、ありがたいです!
個人的には、「どんどん賢くなるFAQ」のBotが、できるところはシステムで、できないところは人でやるというところをうまくやられていて、とても印象に残りました!

LINE developers community 【公式】
https://www.line-community.me/

さて、本題に入ります。
今回は、「LINE×Salesforce」を実現するにあたり、
なぜ、このようなシステム構成になったのかをお話できればと思います。

機能として、実現したいことは、
「求職者様と弊社の担当者が、LINEでメッセージをやりとりできる」
です。

ここで、2つのことを大切にしました。

  1. 求職者からのメッセージは、確実に受け取ること
  2. 過去のメッセージを見れること

LINEからメッセージを取り出せなかった(APIがない※)ため、
送られたとき、メッセージを保存しておく必要がでてきました。

※多くのユーザを抱えるLINEだと、そのぶんだけストレージを必要とする。メッセージをもつことにあまりメリットがないため、「メッセージを保存しない」か、「もっても数週間だけ」という方針がとられているように感じる。

はじめに、Salesforceにメッセージを保存すると考えたとき、

以下の問題がでてきました。

  • データ容量
    求職者数×メッセージ数のデータをもつとすると、数GBになり、Salesforceで利用できるデータ領域を圧迫してしまう

  • コール数
    ライセンスにより異なりますが、24 時間あたりの合計コール数が制限されています。数値については、[組織プロファイル]-[組織情報]をご覧ください。そのほか、ライセンスなどは参考資料をご参照ください。

  • 環境依存によるリスク
    Salesforceが、メンテナンスで利用できないときや、ビジー状態でタイムアウトしてしまったとき、メッセージが消失してしまう。
    そのため、Salesforceにメッセージを保存することはやめ、メッセージングサーバを挟み、そこに保存することにしました。

メッセージングサーバの主な役割は、

  1. メッセージを送受信できること
  2. メッセージを蓄積できること

です。

これで、上記の大切にしたことを実現できるのでは?と考えました。

今回、メッセージングサーバは、負荷分散とバックアップも踏まえて、アマゾン ウェブ サービス(AWS)を利用することにしました。

AWSについては、次回、書こうと思います♪

参考資料

SalesforceのEditionおよびAPIバージョンを確認する方法
https://help.salesforce.com/articleView?id=000199268&language=ja&type=1

Salesforce API要求の制限と割り当て
https://developer.salesforce.com/docs/atlas.ja-jp.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm