CData ConnectとTwilioを接続し、コールログを取得してみた
この記事はCData Software Advent Calendar 2021の20日目です。Twilio Advent Calendar 2021 - Twilioを使うためのコツ、TIPSなど、Twilioのことなら何でも共有しよう!のカレンダー2にも同時に投稿しようとしたら怒られてしまいましたw
CData Connectとは
CData ConnectはSaaS/クラウドのデータに接続し、アプリケーションに連携できる製品です。250種類以上のデータソースに対応しており、私が所属するTwilioのデータにもアクセスできます。
今回の記事ではこのCData Connectを使ってTwilioと連携してみました。
前提条件
- CData Connect - トライアル利用の申し込み
- Twilio アカウント
- REST APIや、OData、MySQL、SQL Serverに接続できるアプリケーション(データ可視化アプリケーションがお勧め)
Twilioアカウントに接続
CData Connectアカウントの取得後、CData Connectに接続すると対応するソースの一覧が表示されます。この一覧からTwilioを選択します。
次にTwilio認証情報を入力する画面が表示されます。この画面にはAccount Sid
およびAuth Token
を入力します。
取得方法については下記で説明されています。(記事はAuthトークンの取得方法ですが、Account Sidも同じ画面で取得できます。
取得した情報を入力しSave Changes
ボタンをクリックします。
どんなデータが取得できるかをみてましょう。Data Explorer
タブをクリックし、Twilio1
を選択します。左側のナビゲーションに取得できるリソースの一覧が表示されます。
この一覧から項目をドラッグし、右上のペインにドロップするとSQLクエリが表示されます。
TwilioのコールログにはCall Resource APIを用いてアクセスでき、着信元や発信先などプライバシーに関わる情報も含まれています。そのままアプリケーションに渡すのは良くなさそうです。
出力するデータを定義
不必要なデータをアプリケーションに渡さないように絞っていきましょう。ODATA
画面を開き、Add Tables...
ボタンをクリックします。
DatabaseからTwilio1
を選択し、
[CData].[Twilio].[Calls]
にチェックを入れます。
今回は情報の取得だけが目的なのでGET
のみを指定し、不要な列のチェックを外していきます。
アプリケーション用のアカウントを作成し、権限を付与
CData Connectに初期状態でアクセスしているのはadmin
ユーザーなのでアプリケーションからの利用に適していません。そのため、レポート用アカウントを作成します。
トップナビゲーションからUSERS
を選択し、ユーザー一覧画面から+Add
ボタンをクリックします。
ダイアログではアプリケーションで使用するユーザーを登録します。
一覧画面にユーザーが追加されたことを確認します。ここでもAuthtoken
が表示されますが、この値はアプリケーションからCData Connectに接続する際に利用します。
DATA MODEL
画面に戻り、Connected Sources
からTwilio1
をダブルクリックします。
続けてPrivileges
タブを表示し先ほど作成したアカウントにSELECT
権限を追加しデータの読み取りができるように設定しました。
これで設定は完了です。
Postmanで接続テスト
API
画面を開くと先ほど設定したテーブルがTables
に表示されています。項目をクリックするとこのテーブルのエンドポイントが確認できます。このURLと先ほど作成したユーザーのAuthTokenを用いて接続確認ができます。
今回はPostmanを使ってみました。
Postmanを開き、URLを指定します。リクエストヘッダーにx-cdata-authtoken
というKeyを追加し、先ほどのAuthtoken
をValueに設定します。
Send
ボタンをクリックするとコールログがJSON形式で返ってきます。とっても簡単
ここから先はご自由に
これでアプリケーションでTwilioのコールログを使用する準備が整いました。同じことをTwilio APIだけでも実現可能ですが、CData Connectを中間に入れ込むメリットは次のような点だと感じました。
- CData Connectを中間に配置することで複数のデータソースを利用する場合、それぞれへの接続方法をアプリケーション実装者が理解しなくても良い。CData Connectにさえ接続できれば良い
- それぞれのデータソースへの認証情報を共有しなくて良いので気持ち安全
- TableauやMicrosoft Power BI、Revealなど、BIアプリケーションで利用する場合に「どのデータを表示すべきか」を管理できるので見せてはいけない情報は隠せる
Revealで可視化してみた一例はこんな感じです。
設定も簡単なのでデータアクセス基盤をCData Connectで構築するとアプリケーションの開発生産性が上がるんじゃないかな?