Register by 10/16 for $250 off the on-site price.

TwiML™ Voice: <Record>

<Record> 動詞は、発信者の音声を録音し、録音した音声ファイルの URL を返却します。<Record> 動詞の transcribe 属性を true にセットすることで、録音された通話のトランスクリプションも生成できます。

動詞の属性

<Record> 動詞は次の属性をサポートします。これらを使って動作を変更します。

属性名 許容値 初期値
action 相対または絶対 URL 現在の文書の URL
method GET, POST POST
Timeout 正の整数値(秒) 5
finishOnKey すべての数字キー、# キー、* キー 1234567890*#
maxLength 1 より大きい整数値 3600 (1 時間)
playBeep true, false true
trim trim-silence, do-not-trim trim-silence
recordingStatusCallback 相対または絶対 URL none
recordingStatusCallbackMethod GET, POST POST
transcribe true, false false
transcribeCallback 相対または絶対 URL none

DIAL動詞 と SMS動詞は、複数の属性を使えます。

下の例ではcallerIdパラメータが省略されていますが、Twilio for KDDI Web Communications をご利用のお客様においては、callerId パラメータで必ずご自身で購入したTwilio電話番号を指定する必要があり、かつ、省略できません。

DIAL動詞で電話をかける場合にはTwilio電話番号(050/0120/0800/その他番号)を、SMS動詞でSMSを送信する場合にはアメリカ番号もしくはSMSが有効なTwilio番号を指定する必要があります。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.record({
    timeout: 10,
    transcribe: true
});

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Record(timeout: 10, transcribe: true);

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->record(['timeout' => 10, 'transcribe' => 'true']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.record(timeout: 10, transcribe: true)

puts response
from twilio.twiml.voice_response import Record, VoiceResponse

response = VoiceResponse()
response.record(timeout=10, transcribe=True)

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Record record = new Record.Builder().timeout(10).transcribe(true)
            .build();
        VoiceResponse response = new VoiceResponse.Builder().record(record)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Record timeout="10" transcribe="true" />
</Response>
Record動詞内の属性の使用

action

'action'属性は、値として相対または絶対URLを取ります。 録音が終了すると、Twilioは下記のパラメーターを含んだGETまたはPOSTのリクエストを、このURLに発行します。 'action'が指定されなかった場合、<Record>は既定で現在のドキュメントのURLをリクエストします。

このリクエストの発行後、Twilioはユーザーのサーバーからのレスポンスで受け取ったTwiMLを使用して現在の通話を継続します。 既定ではTwilioは現在のドキュメントのURLを再リクエストすることから、不注意で意図せぬループ状態を引き起こすことがある点に留意してください。 <Record>以降に現れるTwiML動詞は到達不可能になります。

ただし 1 つ例外があります。録音された音声ファイルが空の場合、action URL へのリクエストは行われません。 コールフローは、現在の TwiML 文書内の次の動詞へ進みます。

リクエストパラメーター

Twilio は action URL へのリクエストとともに、 標準的な TwiML 音声通話リクエスト パラメーター に加え、次のパラメーターを渡します。

パラメーター 概要
RecordingUrl 録音されたオーディオのURLです。 録音ファイルは 'action' コールバックの送信時にはまだアクセスできない可能性があります。 レコーディングがアクセス可能になった時点での確実な通知には、recordingStatusCallbackを使用してください。  
RecordingDuration 録音されたオーディオの長さ(秒単位)です。 無音部分を削除した後の正確な録音の長さの確定値を取得するには、RecordingStatusCallbackを使用してください。
Digits 指定したキーが押されると、録音を終了します。

RecordingUrl へのリクエストは、デフォルトでバイナリ WAV オーディオ フォーマットの録音を返却します。 MP3 フォーマットの録音をリクエストする場合は、RecordingUrl に「.mp3」を追加してください。

method

method 属性は GET または POST の値を取ります。 action URL へのリクエスト送信に、HTTP の GET と POST のどちらを使うかを、Twilio に指示します。 この属性は、HTML フォームの method 属性に従い指定します。初期値は POST です。

Timeout

The 'timeout' attribute tells Twilio to end the recording after a number of seconds of silence has passed. To disable this feature, set 'timeout' to 0. The default is 5 seconds.

finishOnKey

finishOnKey 属性を使うと、押された時に録音を終了するキーを選択できます。 たとえば、finishOnKey に「#」を設定した場合、発信者が「#」を押すと、Twilio は録音を終了し、action URL へのリクエストのパラメーターとして RecordingUrl、RecordingDuration、# を送信します。 許容値は、0 から 9 までの数字キー、「#」キー、「*」キーです。 初期値は「1234567890*#」 です (つまり、どのキーが押されても録音を終了します)。<Gather> とは異なり、finishOnKey の値には複数の文字を指定できます。

maxLength

'maxLength' 属性はレコーディングの最大長を秒数で指定します。 'maxLength' を'30' に指定すると、録音時間が30分を過ぎると自動的に録音が終了します。 既定値は通常の通話については3600秒(1時間)、テキスト文字化の録音については120秒(2分)です。 <Record>を使用するTwilioクライアント通話は600秒(10分)に制限されています。

playBeep

playBeep 属性には、 録音を開始する前に通知音を鳴らすかどうかを指定できます。 false を指定した場合、通知音は鳴りません。

trim

”trim”属性は音声ファイルから無音部分を探しだします。
"trim"のデフォルトはtrim-silenceです。録音の始めと終わりの無音部分を削除します。
これにより、録音ファイルの分数は通話時間よりも少なくなります。

recordingStatusCallback

'recordingStatusCallback'属性はその引数に相対または絶対URLを取ります。'recordingStatusCallback' URLが与えられた場合、Twilioは録音がアクセス可能になった時点で、指定されたURLにGETまたはPOSTのリクエストを発行します。

リクエストパラメーター

Twilio は、リクエストと以下のパラメーターを「recordingStatusCallback」URL へ転送します。

パラメーター 概要
AccountSid この録音の属するアカウントの一意な識別子です。
CallSid 録音に関連づけられた通話の一意な識別子です。 
RecordingSid この録音のユニークな識別子です。
RecordingUrl 録音された音声の URL。
RecordingStatus 録音のステータス。取りうる値は completed です。
RecordingDuration この録音の長さ (秒) です。
RecordingChannels 最終的な録音ファイルのチャンネル数を示す整数です。 <Record>動詞に対しては、1チャンネルのみがサポートされます。
RecordingSource 録音の作成された通話の種類です。 <Record>動詞を使用して開始された録音の場合は、RecordVerbが返されます。

recordingStatusCallbackMethod

この属性は、「recordingStatusCallback」のリクエスト送信に使う HTTP メソッドを指定します。デフォルトは「POST」です。

transcribe

※日本語には対応しておりません。英語のみ対応しています。

transcribe 属性を使って、録音された音声のテキスト化を Twilio に指示できます。 Twilio はこの録音を Twilio の音声テキスト変換エンジンに渡し、音声から文字への変換を試みます。デフォルトでは、transcribe オプションはオフになっています。 トランスクリプションを行わない場合は、transcribe 属性を設定しないでください。

注:トランスクリプションは有償の機能です。 <Record> 動詞で 'transcribe' 属性または 'transcribeCallback' 属性を指定すると、アカウントへの請求が発生します。テキスト化の料金は料金ページをご覧ください。

加えて、現在トランスクリプション対象は、2 秒より長く、120 秒より短い長さの録音に制限されています。 この範囲外の長さの録音のトランスクリプションをリクエストすると、Twilio は録音のトランスクリプションを行わずに、デバッグログに警告を書き込みます。

transcribeCallback

'transcribeCallback'属性は、'transcribe'属性と組み合わせて使用されます。 これによって、音声文字化の完了時にTwilioが非同期のPOSTリクエストを発行するURLを指定できます。 これはTwiMLのリクエストではなく、そのレスポンスは通話のフローを変更しませんが、リクエストには音声文字化固有のものに加え、標準のTwiMLリクエストパラメーターが含まれます。

transcribeCallback を指定した場合、transcribe=true を指定する必要はありません。 暗黙的に true となります。 transcribeCallback を指定せずに transcribe=true を指定した場合、完成したトランスクリプションは保存され、後で取得できます (REST API の Transcriptions セクションを参照してください) 。ただし、Twilio からユーザーアプリケーションへの非同期の通知は行われません。

リクエストパラメーター

Twilioは、以下のパラメータを付与して 'transcribeCallback' URL へリクエストを渡します。

パラメーター 概要
TranscriptionSid このトランスクリプションの 34 文字のユニークな ID です。
TranscriptionText トランスクリプションのテキストの内容です。
TranscriptionStatus トランスクリプションの結果です。completed または failed になります。
TranscriptionUrl トランスクリプションの REST API リソースの URL です。
RecordingSid トランスクリプションの元となった録音の 34 文字のユニークな ID です。
RecordingUrl トランスクリプションの元となった録音の URL です。
CallSid Twilio が生成したこの通話のユニークな識別子です。
AccountSid ユーザーの Twilio アカウント ID です。アカウント ID は 34 文字で、必ず AC から始まります。
From 発信者(相手側)の電話番号、または クライアント識別子 です。書式は E.164形式 (+で始まり国番号が続く形式) です。

例:+16175551212

クライアント識別子は、 client: で始まるURLスキームで、例えば、'tommy' という名前のクライアントからの着信の場合、From パラメータは、client:tommy となります。
To 発信先の電話番号またはクライアント識別子です。 電話番号は「+」希望に続き国コードが続く形式で指定します。 (例: +16175551212) E.164形式と呼ばれます。 クライアント識別子は client: URIスキームから始まります。 たとえば「joey」というクライアント名に通話を発信するには、Toパラメーターの値はclient:joeyとなります。
CallStatus この通話のステータスに関する説明です。値は、queued(キューイングされた)、ringing(呼び出し中)、in-progress(通話中)、completed(完了)、busy(相手が通話中)、failed(失敗)、no-answer(相手が不出) のいずれかになります。詳細は、CallStatusセクションをご覧ください。
ApiVersion この通話の処理に使用する Twilio API のバージョンです。 着信通話では、宛先の電話番号に設定された API バージョンになります。 発信通話では、発信通話の REST API リクエストで使用する API のバージョンになります。
Direction この通話の方向を示す文字列です。着信通話は inbound、REST API で発信した通話は outbound-api<Dial> 動詞で発信した通話は outbound-dial となります。
ForwardedFrom Twilio が転送通話を受けた場合のみ設定されます。ただし、転送情報などの値は、発信者が使用している通信事業者により異なります。 この情報を渡さない通信事業者もあります。

ネスティングルール

<Record>の中には、動詞をネストできません。また、すべての動詞の中に <Record> をネストできません。

参考

サンプル

例 1: 録音する

Twilio が <Record> 動詞を実行すると、通知音が鳴り、録音が始まります。 無音の状態が 5 秒を超えたか、発信者が「#」を押した場合、または録音の再長時間が経過した場合、Twilio は RecordingUrl と RecordingDuration パラメーターとともに、HTTP の POST リクエストをデフォルトの action (現在の TwiML 文書の URL) へ送信します。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.record();

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Record();

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->record();

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.record

puts response
from twilio.twiml.voice_response import Record, VoiceResponse

response = VoiceResponse()
response.record()

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Record record = new Record.Builder().build();
        VoiceResponse response = new VoiceResponse.Builder().record(record)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/simple_record.xml -->
<Response>  
    <Record/>  
</Response>
シンプルなRecord

例 2: ボイスメールを録音する

シンプルなボイスメールの例です。 発信者は、通知音の後にメッセージを録音します。<Record> 動詞は、通知音を鳴らして録音を開始します。最長 20 秒録音できます。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say(
  'Please leave a message at the beep.\nPress the star key when finished.'
);
response.record({
  action: 'http://foo.edu/handleRecording.php',
  method: 'GET',
  maxLength: 20,
  finishOnKey: '*',
});
response.say('I did not receive a recording');

console.log(response.toString());
using Twilio.TwiML;
using Twilio.Http;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response
            .Say("Please leave a message at the beep.\nPress the star key when finished.");
        response.Record(action: new Uri("http://foo.edu/handleRecording.php"),
            method: HttpMethod.Get, maxLength: 20, finishOnKey: "*");
        response.Say("I did not receive a recording");

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->say('Please leave a message at the beep.\nPress the star key when finished.');
$response->record(['action' => 'http://foo.edu/handleRecording.php',
    'method' => 'GET', 'maxLength' => 20, 'finishOnKey' => '*']);
$response->say('I did not receive a recording');

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response
  .say(message: 'Please leave a message at the beep.\nPress the star key when finished.')
response.record(action: 'http://foo.edu/handleRecording.php', method: 'GET',
                max_length: 20, finish_on_key: '*')
response.say(message: 'I did not receive a recording')

puts response
from twilio.twiml.voice_response import Record, VoiceResponse, Say

response = VoiceResponse()
response.say(
    'Please leave a message at the beep.\nPress the star key when finished.'
)
response.record(
    action='http://foo.edu/handleRecording.php',
    method='GET',
    max_length=20,
    finish_on_key='*'
)
response.say('I did not receive a recording')

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.TwiMLException;
import com.twilio.http.HttpMethod;

public class Example {
    public static void main(String[] args) {
        Say say = new Say
            .Builder("Please leave a message at the beep.\nPress the star key when finished.").build();
        Say say2 = new Say.Builder("I did not receive a recording").build();
        Record record = new Record.Builder()
            .action("http://foo.edu/handleRecording.php").method(HttpMethod.GET)
            .maxLength(20).finishOnKey("*").build();
        VoiceResponse response = new VoiceResponse.Builder().say(say)
            .record(record).say(say2).build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/voicemail_record.xml -->
<Response>
    <Say>
        Please leave a message at the beep. 
        Press the star key when finished. 
    </Say>
    <Record 
        action="http://foo.edu/handleRecording.php"
        method="GET" 
        maxLength="20"
        finishOnKey="*"
        />
    <Say>I did not receive a recording</Say>
</Response>
留守番電話をRecord(録音)する
  • 発信者が無音のまま 5 秒経過すると <Record> 動詞を抜けて TwiML 文書内の次の動詞へ移ります。 この例では、<Say> 動詞へ移ります。
  • 発信者が20秒未満発話して、その後5秒間無音状態が続くと、Twilioは「action」URLにGETリクエストを発行します。 <Say>動詞には到達できません。
  • 発信者が 20 秒のメッセージを録音し終わると、Twilio は action URL へ GET リクエストを送信します。<Say> 動詞は不達となります。

例 3: 録音のトランスクリプション

Twilio は発信者の声を録音します。 録音が終了すると、Twilio は録音をテキスト化し、この録音のトランスクリプションを含むパラメーターとともに、HTTP の POST リクエストを transcribeCallback URL へ送信します。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.record({
    transcribe: true,
    transcribeCallback: '/handle_transcribe.php'
});

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Record(transcribe: true,
            transcribeCallback: new Uri("/handle_transcribe.php"));

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->record(['transcribe' => 'true',
    'transcribeCallback' => '/handle_transcribe.php']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.record(transcribe: true, transcribe_callback: '/handle_transcribe.php')

puts response
from twilio.twiml.voice_response import Record, VoiceResponse

response = VoiceResponse()
response.record(transcribe=True, transcribe_callback='/handle_transcribe.php')

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Record record = new Record.Builder().transcribe(true)
            .transcribeCallback("/handle_transcribe.php").build();
        VoiceResponse response = new VoiceResponse.Builder().record(record)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/record_and_transcribe.xml -->
<Response>
    <Record transcribe="true" transcribeCallback="/handle_transcribe.php"/>
</Response> 
録音の文字起こしを行う

ヒントとテクニック

  • Twilio は、録音の最初と最後の無音部分を取り除いて、音声ファイルを生成します。 このため、発信者が実際に録音した時間よりも、音声ファイルの再生時間が少し短くなる場合があります。

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。

コードサンプルを読み込んでいます...
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.record({
    timeout: 10,
    transcribe: true
});

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Record(timeout: 10, transcribe: true);

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->record(['timeout' => 10, 'transcribe' => 'true']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.record(timeout: 10, transcribe: true)

puts response
from twilio.twiml.voice_response import Record, VoiceResponse

response = VoiceResponse()
response.record(timeout=10, transcribe=True)

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Record record = new Record.Builder().timeout(10).transcribe(true)
            .build();
        VoiceResponse response = new VoiceResponse.Builder().record(record)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Record timeout="10" transcribe="true" />
</Response>
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.record();

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Record();

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->record();

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.record

puts response
from twilio.twiml.voice_response import Record, VoiceResponse

response = VoiceResponse()
response.record()

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Record record = new Record.Builder().build();
        VoiceResponse response = new VoiceResponse.Builder().record(record)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/simple_record.xml -->
<Response>  
    <Record/>  
</Response>
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say(
  'Please leave a message at the beep.\nPress the star key when finished.'
);
response.record({
  action: 'http://foo.edu/handleRecording.php',
  method: 'GET',
  maxLength: 20,
  finishOnKey: '*',
});
response.say('I did not receive a recording');

console.log(response.toString());
using Twilio.TwiML;
using Twilio.Http;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response
            .Say("Please leave a message at the beep.\nPress the star key when finished.");
        response.Record(action: new Uri("http://foo.edu/handleRecording.php"),
            method: HttpMethod.Get, maxLength: 20, finishOnKey: "*");
        response.Say("I did not receive a recording");

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->say('Please leave a message at the beep.\nPress the star key when finished.');
$response->record(['action' => 'http://foo.edu/handleRecording.php',
    'method' => 'GET', 'maxLength' => 20, 'finishOnKey' => '*']);
$response->say('I did not receive a recording');

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response
  .say(message: 'Please leave a message at the beep.\nPress the star key when finished.')
response.record(action: 'http://foo.edu/handleRecording.php', method: 'GET',
                max_length: 20, finish_on_key: '*')
response.say(message: 'I did not receive a recording')

puts response
from twilio.twiml.voice_response import Record, VoiceResponse, Say

response = VoiceResponse()
response.say(
    'Please leave a message at the beep.\nPress the star key when finished.'
)
response.record(
    action='http://foo.edu/handleRecording.php',
    method='GET',
    max_length=20,
    finish_on_key='*'
)
response.say('I did not receive a recording')

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.TwiMLException;
import com.twilio.http.HttpMethod;

public class Example {
    public static void main(String[] args) {
        Say say = new Say
            .Builder("Please leave a message at the beep.\nPress the star key when finished.").build();
        Say say2 = new Say.Builder("I did not receive a recording").build();
        Record record = new Record.Builder()
            .action("http://foo.edu/handleRecording.php").method(HttpMethod.GET)
            .maxLength(20).finishOnKey("*").build();
        VoiceResponse response = new VoiceResponse.Builder().say(say)
            .record(record).say(say2).build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/voicemail_record.xml -->
<Response>
    <Say>
        Please leave a message at the beep. 
        Press the star key when finished. 
    </Say>
    <Record 
        action="http://foo.edu/handleRecording.php"
        method="GET" 
        maxLength="20"
        finishOnKey="*"
        />
    <Say>I did not receive a recording</Say>
</Response>
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.record({
    transcribe: true,
    transcribeCallback: '/handle_transcribe.php'
});

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Record(transcribe: true,
            transcribeCallback: new Uri("/handle_transcribe.php"));

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\TwiML;

$response = new TwiML();
$response->record(['transcribe' => 'true',
    'transcribeCallback' => '/handle_transcribe.php']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.record(transcribe: true, transcribe_callback: '/handle_transcribe.php')

puts response
from twilio.twiml.voice_response import Record, VoiceResponse

response = VoiceResponse()
response.record(transcribe=True, transcribe_callback='/handle_transcribe.php')

print(response)
import com.twilio.twiml.voice.Record;
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Record record = new Record.Builder().transcribe(true)
            .transcribeCallback("/handle_transcribe.php").build();
        VoiceResponse response = new VoiceResponse.Builder().record(record)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/record_and_transcribe.xml -->
<Response>
    <Record transcribe="true" transcribeCallback="/handle_transcribe.php"/>
</Response>