14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Twilioなら電話の保留機能も簡単に実装可能です。

Posted at

本ブログではTwilioを使って電話の保留機能を実装してみたいと思います。
今回のブログでも複数の機能を組み合わせて「電話の保留」機能を実装してみたいと思います。
オペレーターがかかってきた電話を対応する際に他の部署や担当に電話を回す作業で良く使われています。
本ブログではその機能をTwilioを使って実装してみたいと思います。

今回使うTwilioの機能

■ 通話の更新:update Twilioの機能には「update」というのがあります。 この機能は成立されている通話の処理を他の処理に切り替える事が可能な機能です。 通話中のCall SIDを使って他の電話にしたり案内メッセージ、音声ファイルを再生したり、プッシュ音により入力をもらったりなど様々なTwilioの機能を実装することが可能です。

■ 待機ルームを生成します。:

■ 待機ルームでコールを管理します。:
TwilioのQueueは該当通話を待機させます。

まず、保留ルームを生成します。

下のコードで、「supportRoom」というキューのルームを生成します。
twiml-enqueue.xml
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say language="ja-jp">少々お待ちください。</Say>
  <Enqueue waitUrl="twiml-play.xml">supportRoom</Enqueue>
</Response>

のを使って、生成されたルーム「supportRoom」に電話をかけます。

twiml-enqueue.xml
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say language="ja-jp">supportRoomにお繋ぎします。</Say>
  <Dial>
    <Queue>supportRoom</Queue>
  </Dial>
</Response>

CallSidの取得と通話のアップデート。

Twilioは通話中の電話の処理を更新することが可能です。 下のコードを通話を更新するタイミングで実行しますと、8行目に設定されている、CallSidのコール(通話)が更新されます。
twiml-call-update.php
<?php
  require_once('../Services/Twilio.php'); // Loads the library
 
  $sid = "ACxxxxxxxxxxxxxxx"; // Twilio Account Sid
  $token = "yyyyyyyyyyyyyyy"; // Twilio Auth Token
  $client = new Services_Twilio($sid, $token);
 
  $call = $client->account->calls->get("CAxxxxxxxxxyyyyyyyyyy"); // Call Sid
  $call->update(array(
    "Url" => "http://xxx.xxx.xxx.xxx/twiML/twiml-say.xml",
    "Method" => "POST"
  ));
  echo $call->to;

CallSidはこのように取得することが可能です。
通話が生成された時点でTwilioはCallSidを発行することになっています。
そのCallSidを使いますと、履歴の取得はもちろん、今の状態や上記の通話更新も可能です。

twiml-get-call.php
<?php
  require('../Services/Twilio.php');
 
  $account_sid = "ACxxxxxxxxxx"; // Twilio account sid
  $auth_token = "yyyyyyyyyyyyy"; // Twilio auth token
 
  $client = new Services_Twilio($account_sid, $auth_token);
 
  $call = $client->account->calls->create(
    '+8150xxxxyyyy', // Twilio電話番号
    '+8180xxxxyyyy', // 発信先電話番号
 
    'http://xxx.xxx.xxx.xxx/twiML/twiml-say.xml'
  );
  print $call->sid;

こんな流れです。
① ユーザーが050番号に電話をかけます。
② オペレーターAがその電話を対応します。
③ ユーザーからの内容を聞いて担当に繋ぐためにウェブ画面に表示されている「保留」ボタンをクリックする又は担当を選択し「通話転送」ボタンをクリックします。
④ 指定した担当に電話を転送し、ユーザーと担当が通話を継続する。

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?