AI CROSSの主となる事業、SMS(ショートメッセージ)配信サービス。
ちょっとニッチな世界だからこそ知っていただきたい。
AI CROSS エンジニアリングの、そんな取り組みをお伝えしていきます☆
みなさんこんにちは!今回も当社のフィードをご覧いただきありがとうございます♪
前回に続いて今回は第二弾★ 当社CTOの鈴木より、【SMSのAPI利用について 】をお伝えします。
このフィードを通じて、お読みいただいたみなさまに、少しでも当社を知って興味を持っていただけたら嬉しいです!
SMSのAPI連携について
前回のフィードにて、SMSって何?ということから、具体的にどんなシーンで利用されているの?や、意外と長いSMSの歴史を書いてみました。
今回は少しレベルアップして、APIで利用する場合について書いてみます☆
AI CROSSは、AIX Message SMSという(https://www.aixmsg.com/)、企業がSMS配信を利用するためのプラットフォームを提供していて、
利用方法としては、
・ 専用のWeb管理画面から利用する
・ APIを使用してシステム連携で利用する
の2つの利用方法があります。
管理画面の機能についてはhttps://www.aixmsg.com/features/にて記載していて、マニュアルもあります。
AIX Message SMSのシステム構成をざっくり図にすると下記のようになります。
図に記載のあるようにお客様システムやCTI、CRMなどから、HTTPS API, SMPP APIを利用して、実に色々なシステムがAIX Message SMSと連携しているんです。
例えば、スマホアプリのサーバー、各種SaaSサービスの管理サーバー、お客様の業務システム、安否確認システム、あるいは、Avaya/GenesysなどのCTI、電話の音声自動応答システム(IVR)、Salesforceなどのサービスとも連携して使われています。
HTTPS APIはとてもシンプルなREST APIになっていて、SMSの送信、SMS配信結果の取得などの機能をシンプルに使用することができるようになっています。
では APIの詳細について少し見ていきましょう☆
APIを詳しく解説っ!
APIを使った送信の流れは、シーケンス図で書くと、下記のようになるんです。
送信、配信結果取得、それぞれにAPIがあります。
AIX Message SMSにお申し込みいただくと、Web管理画面からAPI仕様書をダウンロードすることができます。またAPIを利用するために必要になる認証token等の情報も、Web管理画面から参照できます。
それでは、特に重要なAPIを解説しますね。
【SMS送信API】
パラメータも色々指定できるのですが、特に主要なパラメータのみ解説します。
AIX Message SMSでは、「キャリア判定」の機能を持っていまして、SMSを送信する時に宛先電話番号の携帯電話がどのキャリアかを判定して、それぞれのキャリアGWに送信します。
それぞれのキャリアGWの仕様の違いから最大送信文字数に違いがあり、それによってパラメータが分かれているんです。
もし本文が70文字以内でもよければ、messageパラメータのみを指定すれば良いですし、もし70文字以上送る必要がある場合は、各キャリア本文のパラメータも指定することになります。(ただし、PHSなど70文字以上送れないキャリアもあります)
clientTagというパラメータはメッセージの識別子で、後述の送信結果取得APIやDLRでどのメッセージの送信結果を取得するかを指定するために使うため、常に他と重複しない一意の値を指定する必要があるんです。APIとしては必須パラメータではないのですが、指定した方が良いパラメータです。ただし重複するとエラーが出るので、重複しないように管理が必要。
例えば、+81x0xxxxxxxx の電話番号宛に、「テスト」と送信する場合、HTTPS POSTのBODYの中身は下記のような感じになります。
token=[トークン]&clientId=[クライアントID]&smsCode=[SMSコード]&phoneNumber=%2B81x0xxxxxxxx&clientTag=[一意な文字列]&message=[“テスト”をURL encodeしたもの]
APIのURLはjsonで終わっているのですが、これはAPIの結果がjsonで返されるという意味でして、パラメータは、application/x-www-form-urlencoded で指定することになります!
API送信がうまく行かない時は、Postmanとか curl -X POST -d ‘[BODYの中身]’ [APIのURL] とかで、まず試すのがよくやるやり方なんですよ。
API仕様書にはJava/PHPの簡単なコード例も記載しています。
【送信結果取得API】
これも主要なパラメータのみ記載します。
送信時にclientTagを指定しおくのがポイントです。
そうすることで、指定したclientTagに対応するメッセージの送信結果(送達、失敗、配信中、失敗の場合はエラーの詳細)およびその他詳細情報を取得できます。
【DLR(Delivery Receipt)】
先ほどの送信結果取得APIは、APIコールで問い合わせて結果を取得するものでしたが、送信結果が確定次第すぐに知りたい場合に利用するのがDLR(Delivery Receipt)です。
DLRは、AI CROSSのサーバからHTTPS POSTコールで、送信結果をお客様のサーバにコールバックするものです。(設定について少し細かく記載すると、、、送信結果コールバックを受け付けるサーバをあらかじめ準備しておいていただき、DLRを利用したい旨、およびコールバックを受け付けるサーバの情報をお申し込みと共にAI CROSSにお知らせいただく必要があります。またファイアウォールなどの制限がある場合は、AI CROSSのサーバからのコールバックは受け付けられるように設定いただく必要があります)
APIのバージョンはp1/p11/p4と複数あるのですが、p11/p4 APIは、エラーの詳細を5桁の数字のエラーコードとして取得できるので、p11/p4 APIの利用がおすすめです!
ざっくり、HTTPS API利用の概要を説明しましたが、いかがでしたでしょうか?
他にもSMPPというプロトコルのAPIもあるのですが、これはまた別の機会に書きたいと思います☆
まだまだ、奥深~いSMSの世界
AIX Message SMSサービスの各種サーバーは、AWS(Amazon Web Services)上で構築しています。
AI CROSSはAWSのAPN Technology Partnerになっており、お客様に信頼性の高いサービスを提供していくために、AWSの各種機能をうまく活用しながらサービスを構築しています。このあたりの各種小ネタも、このフィードにて、おいおい書いていければと思っています♪
今回のフィードはいかがでしたか?
SMSってスマホで簡単に送受信ができますが、中身はとっても奥深いんですね。
それでは今日はこの辺で。最後までお読みいただきありがとうございました☆
AI CROSSでは一緒にサービスを開発・運用していくエンジニアの方を募集しています。
詳しくは、wantedly内の求人情報をご覧ください☆