2021.11.17
2024.01.24

BIZTEL API使ってみた Vol.6 Salesforceの登録情報に応じてコールセンターの受付動作を自動で変える

「BIZTEL API使ってみた」シリーズでは、BIZTELがもっと便利に使えるようになるAPI連携機能を活用して、サービス担当者がさまざまな機能の実装にチャレンジします。

前回の記事はこちら

今回はSalesforceとの連携により、入電時に登録情報を参照してコールセンターでの受付対応を変化させてみます。

チャレンジ担当

やってみたいこと

内容としてはBIZTEL APIブログの2回目でAWS DBと連携して実現したものに近いです。
今回は、弊社ユーザさまでの利用実績が多いSalesforceと連携し、登録情報によってコールセンター動作の挙動を変える、自動化の仕組みにチャレンジしました。

使用するツール

BIZTELの利用ライセンス

・コールセンタープランのご契約

※ ビジネスフォンプランでもご利用いただける場合がございます。詳細な条件についてはお問い合わせください。

BIZTELで必要なオプション

・API連携IVR
・リアルタイム音声合成

BIZTEL以外に必要なもの

・Salesforce

実現したい動作

1. SalesforceのVIP顧客情報の登録有無によって、BIZTELの外線番号(1番号)への着信を以下2つの窓口に割り振り、応対できるようにする。   

①一般用窓口(内線:7801)   
②VIP用窓口(内線:7802)

2. BIZTELとSalesforceとの連携はOAuthを利用する。

3. 一般用窓口(内線:7801)に着信したお客さまには、音声合成利用して以下のガイダンスを流し、キューイング(待ち呼)させる。
ガイダンス:「登録が確認できませんでした。担当者におつなぎします」

4. VIP用窓口(内線:7802)に着信したお客さまには、音声合成を利用して以下のガイダンスを流し、キューイング(待ち呼)させる。
ガイダンス:「Salesforce登録のお客さま名」+「担当者におつなぎしますのでしばらくお待ちください」

設定の実践

全体の工程としては、大きく分けて以下3項目です。

【1】Salesforce設定準備

・アプリケーションの作成
・作成したアプリケーションの鍵情報を確認

【2】BIZTELでのOAuth設定

・OAuthアカウント登録
・アクセストークンの取得

【3】BIZTELでのIVR設定

・IVRの作成
・API連携設定の編集
・一般用と VIP用の窓口2つのAPI処理を設定

 ではここから、上記の項目で行った詳細な手順をご紹介していきます。

1.Salesforce 設定準備

※Lightning/Classicどちらでもご利用可能です。

①Salesforceにアプリケーションが作成できるアカウントでログインし、以下の設定を行います(下図参照)。

[1]  「設定」から「クイック検索」で「アプリケーションマネージャ」を表示
[2]  検索結果に出てきた「アプリケーションマネージャ」をクリックして選択
[3]  「新規接続アプリケーション」をクリック

②つづいて、「アプリケーションマネージャ」でAPI連携用のアプリケーションを作成していきます。
※ここで作成したアプリケーションがBIZTELとSalesforceをつないでくれます。

[1] 「接続アプリケーション名」と「API参照名」を任意で設定
[2] 「OAuth設定の有効化」にチェック
[3] 利用しているBIZTELサーバのURLの後に、「/oauth_client/callback」をつけたものを入力(「https://sxxxxxxxxxxxx.u.biztel.jp:8000/oauth_client/callback」といった形になります)
[4] OAuthに認可する権限を設定
  ・フルアクセス(full)
  ・ユーザに代わっていつでも要求を実行(reflesh_token, offline_access)

~続き~

[5] 「Webサーバフローの秘密が必要」にチェック
[6] 「IDトークンを設定」〜「通知種別の登録を有効化」までの項目については任意で設定(今回は利用しないので設定していません)
[7] 設定が完了したら「保存」をクリック

③設定を保存後、「アプリケーションマネージャ」画面で先ほど作成したアプリケーションを選択し、「参照」で表示させます(下図参照)。

[1] 今回作成した「biztel_api」の「▼」をクリック
[2] 表示メニューから「参照」を選択

④「接続アプリケーションを管理する」画面で先ほど登録したアプリケーションの「コンシューマ鍵」と「コンシューマの秘密」をメモします(下図参照)。
※それぞれクリップボードにコピーするボタンもあるので随時活用ください。このあたりの作りこみは、さすがSalseforceですね~。

[1] 「API(OAuth設定の有効化)」に表示されている「コンシューマ鍵」をメモ(この図ではモザイク処理をしていますが、実際は英数混じりの文字列が表示されています)
[2] 「コンシューマの秘密(またはコンシューマシークレット)」をクリックし、表示された情報をメモ

2.BIZTELでのOAuth設定

BIZTEL 対象マニュアル: 1.OAuthアカウントの設定

①BIZTEL管理画面にシステム管理者でログインしたうえで、「連携オプション」から「OAuthアカウント登録」を選択し、画面右上の方にある「新規」をクリックしてください。

「OAuthアカウント登録」画面が表示されるので、下の図のように設定します。

[1] 左側のメニューバーにある「連携オプション」から「OAuthアカウント管理」をクリック
[2] 「名称」を任意で設定
[3] 「クライアントID」に「Salesforce:コンシューマ鍵」を、「クライアント・シークレット」に「Salesforce:コンシューマの秘密」をそれぞれ入力
[4] 「認可URL」を設定
https://login.salesforce.com/services/oauth2/authorize?prompt=login consent
[5] 「アクセストークンURL」を設定
  https://login.salesforce.com/services/oauth2/token
[6] 設定が完了したら「保存」をクリック
  ※今回、赤枠で囲っている箇所以外の部分はデフォルトの設定で大丈夫です。

②「OAuthアカウント登録」を完了後、登録内容が表示されます。

その画面の下部にある、「トークン取得」をクリックしてください。
認証設定に問題が無ければ「アクセストークン取得状態」箇所が「取得済み」の表記に変わります。これで設定完了です。

3.BIZTELでのIVR設定

対象マニュアル:1.IVRの新規作成

いよいよここからが大詰めのIVRの挙動設定箇所となります。

BIZTELコールセンターの仕組みを簡単にご説明しますと、IVRや各窓口に内線番号(必要に応じて外線番号)を割り当て、設定を入れるようになっています。

①BIZTEL管理画面で「コールセンター」の「IVR」画面で「新規」をクリックし、赤枠内の項目を設定します (下図参照)。

[1] 「IVR」名・「内線番号」をそれぞれ任意で設定
[2] 「ダイヤルイン番号」は着信用外線番号を設定
[3] 「API連携を利用する」の箇所は「選択する」を設定 ※重要
[4] 設定後、「保存」をクリック

②保存後、以下の図のように先ほど作成したIVRの設定画面が表示されますので、「API連携設定」のタブを選択してください。

③「API連携設定」で編集をクリックし、下の図のように赤枠内をそれぞれ設定してください。

[1] 「API連携種別」は「OAuth」を選択
[2] 「OAuthアカウント」は先ほどの【BIZTELでのOAuth設定】で登録したアカウントを選択
[3] 「URL」にはSalesforceが提供しているAPIを設定 ※注
[4] 「メソッド」には利用するHTTPメソッドを選択 ※今回はHTTP GET
[5] 「受付入力種別」は「入力なし」を選択
[6] 設定が完了したら「保存」をクリック
  ※「リクエストヘッダ」〜「リクエストエラー時の動作」部分は任意で設定(今回はデフォルト設定)

※注:今回利用したSalesforceのAPIは以下のような内容で、HTTP GET用のものです。Salesforce内を電話番号で検索をし、「取引先責任者」の「ID・名前・電話番号」を戻り値として返す設定を入れました。

{OAUTH_INSTANCE_URL}/services/data/v50.0/search/?q=FIND {{TEL}} IN PHONE FIELDS RETURNING Contact(Id, Name, Phone)

URLの“v50.0”の箇所は利用しているSalesforce APIバージョンに合わせてください。
また、今回利用した「取引先責任者:Contact」以外にも、例えば「取引先:Account」などを指定することも可能ですので、適宜変更してみてください。

④「APIレスポンス設定」のタブを選択し、「新規」をクリックしてAPIで取得した内容ごとの処理を設定します。
※以下、Salesforceに登録が無い場合とある場合の2パターンの設定例をご紹介します。

パターン1:Salesforceに登録が無い場合

優先順位 「APIレスポンス設定」が複数ある場合、適用させる優先順位を設定します。
下図の例では「1」(最優先)を指定。
レスポンスコード HTTPのレスポンスコードにより挙動を変えたい場合に設定します。
下図の例では、HTTP 200 OKが返ってくることを条件として設定。
レスポンスパターン 振り分け分岐の条件を「レスポンスボディ内の文字列と指定正規表現とのマッチ」とする場合の正規表現を指定します。
下図の例ではボディに含まれる「SearchRecordsが空=登録が無い」の場合を表しています。
変数抽出パターン APIレスポンス値を変数化して保持する場合にチェック対象とする 正規表現を指定します。
下図の例では使っていません。次に記載する 「パターン2」で説明します。
ガイダンス形式 流すガイダンスの形式を選べます。「標準ガイダンス」の場合、登録したWAVファイルを流すだけですが、「リアルタイム音声合成」の場合、 「音声合成テキスト」に設定した文言(プレーンテキスト、およびAPI レスポンスから抽出した値)を流します。
音声合成テキスト 音声合成エンジンに渡すテキストおよびAPIから抽出した変数を設定します。下図の例ではAPIレスポンス値の設定はしていません。次の「2パターン目」では変数を利用した例を記載しています。
選択時の動作 ここまでに設定した内容に合致している場合の動作を決めます。「転送」「着信ルール」「操作ガイダンス」の3つから選択が可能です。 下図の例では転送を選択しています。
転送先 「選択時の動作」で「転送」を選択した場合に設定できます。
下図の例では、一般用の窓口(7801:SFDC検証用1)に転送指定。
ここまでで問題がなければ「保存」をクリックします。

参考画像

パターン2:Salesforceに登録がある場合

優先順位 「APIレスポンス設定」が複数ある場合、適用させる優先順位を設定します。
下図の例では「2」を指定。
レスポンスコード HTTPのレスポンスコードにより挙動を変えたい場合に設定します。
下図の例では、HTTP 200 OKが返ってくることを条件として設定。
レスポンスパターン 振り分け分岐の条件を「レスポンスボディ内の文字列と指定正規表現とのマッチ」とする場合の正規表現を指定します。
パターン1の例では、「優先順位1」に設定して最初に「登録が無い場合」をフィルタリングしました。下図のパターン2の例では、何らかの登録がある状態ということになりますので、レスポンスパターンは設定していません。
変数抽出パターン APIレスポンス値を変数化して保持する場合にチェック対象とする正規表現を指定します(PHPのPCRE正規表現形式)。
下図の例では「 /”Name”:”(.*)”,/ 」という設定で、HTTP レスポンスのボディ内のName(名前)を抽出する正規表現を指定しています。
抽出した内容は変数CODE1から順番に連番で自動格納されます。
ガイダンス形式 流すガイダンスの形式を選べます。「標準ガイダンス」の場合、登録したWAVファイルを流すだけですが、「リアルタイム音声合成」の場合、 「音声合成テキスト」に設定した文言(プレーンテキスト、およびAPI レスポンスから抽出した値)を音声合成して流します。
音声合成テキスト 音声合成エンジンに渡すテキストおよびAPIから抽出した変数を設定します。
下図の例では、APIレスポンス値から取得したSalesforce の「Name」の値が格納されている変数{CODE1}を指定しています。
お客さまのお名前を音声合成する際の注意点
 漢字登録の場合、音声合成が正しく行われない可能性があるので、Salesforceにひらがなで登録する項目を作成したほうが良いでしょう。
選択時の動作 ここまでに設定をした内容に合致している場合の動作を決めます。
「転送」 「着信ルール」「操作ガイダンス」の3つから選択が可能です。 ※下図の例では転送を選択しています。
転送先 「選択時の動作」で「転送」を選択した場合に設定できます。
下図の例では、VIP用の窓口(7802:SFDC検証用2)に転送指定。
ここまでで問題がなければ「保存」をクリックします。

参考画像

結果

ここまでの設定により、

①BIZTELへの着信時にSalesforce上で発信元番号の検索を行い、
②Salesforce上に登録が無ければ一般用窓口(内線:7801)に着信させ、
③登録があればSalesforceから取得したお客さまのお名前を音声合成で流し、VIP用窓口(内線:7802)に着信させる

という動作を実現することができました!

振り返り・まとめ

今回のような振る舞いの他にも、Salesforceオブジェクト内の値で優先判断を行う、 FAQテキストを渡して音声合成で流すなど、さまざまなアイデアに応用できると思います。 クラウドPBXのBIZTELと外部システムとの連携によるコールセンター業務の自動化・効率化の一案として、本ブログがBIZTELをご利用中のユーザさま、コールセンターシステムの刷新をご検討中の企業さまにとって、少しでも参考になりましたら幸いです。

今回、担当者より「ブログの記事を頼むよ」と依頼された際は困惑しましたが、PHPの正規表現ってどうだっけ?SalesforceのAPI何があったっけ?と復習をしながら、なんとか無事完了することができました。

ひと昔前までは、上記の自動化を実現するとなると個別開発が必要となり、数か月(場合によると1年)単位のプロジェクトで多額の費用が掛かり、多くのプログラマが関与していたと思います。
それが今だと各社提供のAPIを組み合わせるだけで、システム連携が比較的簡単に構築できるようになり、あらためて「クラウドの力ってすごいな~」と実感しました。

最後までお読みいただき、ありがとうございました。

編集後記

今回はSalesforceとBIZTELを連携することで、自社の顧客データベースを参照し、登録の有無に応じて対応を変化させる仕組みを実践しました。

この「BIZTEL API使ってみた」シリーズでは、BIZTELの利用者が実際に思いついた業務改善のアイデアをもとに、今後もさまざまな機能を紹介する予定です。

簡単に実現できるよう、設定方法も交えながらお伝えしますので、読者のみなさまもぜひチャレンジしてみてください。

いまBIZTELをご利用中のお客さまも、「こんなことがしたい」というご希望がございましたら、BIZTELサービス担当までご相談ください!