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で構築するとアプリケーションの開発生産性が上がるんじゃないかな?













