Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now


Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Twilio クライアント JavaScript SDK チェンジログ - Twilio

Attention: Please upgrade to the latest version of twilio.js to avoid upcoming breaking changes in Google Chrome. See this advisory for details.

(Recommended) The latest version of twilio.js can be found on NPM at https://www.npmjs.com/package/twilio-client

Or directly from Twilio's CDN at: https://media.twiliocdn.com/sdk/js/client/v1.9/twilio.min.js https://media.twiliocdn.com/sdk/js/client/v1.9/twilio.js

We strongly recommend that all customers include twilio.js in their applications via npm before going to production. Using npm ensures that any underlying code updates are verified by your application's build process before making it into production, while allowing frequent automatic updates to the newest SDK versions.

1.9.1 (Sept 13, 2019)


  • The Device sounds are now cached. They are only downloaded when Device.setup() is invoked.

1.9.0 (Sept 10, 2019)


Max Average Bandwidth API

By default, the Opus codec is set up with a transmission rate of around 32 kbps (40-50kbps on the wire). With this release, you are able to set a custom max average bitrate to better control how much bandwidth your VoIP application should use. See RFC-7587 section 7.1 for information about Max Average Bitrate.

The main purpose of this API is to set a lower max average bitrate to minimise bandwidth usage. This is particularly useful in deployments where bandwidth is at a premium. Where bandwidth is not of concern, you do not need to use this API. Max Average Bitrate can be set to as low as 6,000bps and as high as 51,000 bps. Values outside this range are ignored and the default Opus operation mode is used. See API Docs for more information.

As would be expected, lowering the max average bitrate impacts audio quality. We don’t recommend setting max average bitrate to a value below 8,000 bps. On the other hand, setting values over 32,000 bps will have negligible audio quality improvements.

This is currently not supported in Firefox due to this bug.

Example, to set a new max average bitrate to 16,000 bps:

Device.setup(TOKEN, {
  codecPreferences: ['opus', 'pcmu'],
  maxAverageBitrate: 16000,


  • Fixed an issue causing multiple devices that are created in the same tab to get disconnected when one of the devices disconnects a connection.

1.8.1 (Aug 28, 2019)


  • Fixed an issue causing audio levels to be reported as zero when running as an extension, or when the browser tab is inactive or minimized.

  • Fixed an issue causing Connection.status() to return pending instead of closed after calling Connection.reject().

1.8.0 (Aug 20, 2019)


Media Reconnection States and Events

This feature, when enableIceRestart is enabled, allows for detecting when media connection fails which will trigger automatic media reconnection, and for detecting when media connection is restored.

New Events

We've added two new events that will fire when enableIceRestart is enabled:

  • Connection.on('reconnecting', handler(error)) - raised when media connection fails and automatic reconnection has been started by issuing ICE Restarts. During this period, Connection.status() will be set to reconnecting.
    • error - Error object { code: 53405, message: 'Media connection failed.' }
    • Media reconnection triggers
      • ICE Connection state transitions to disconnect and bytes sent and received in the last 3 seconds is zero.
      • ICE Connection state or PeerConnection state transitions to failed. Only Chrome browser will attempt an ICE restart with this trigger. Other browsers will immediately disconnect the call and raise an error 31003. This is due to browsers not fully supporting connection states during an ICE restart.
  • Connection.on('reconnected', handler()) - raised when media connection has been restored which is detected when media starts flowing. Once reconnected, Connection.status() will be set to open.

ICE restarts will be retried in the event that previous ICE restarts are unsuccessful. Retry attemps will happen when ICE Connection state or PeerConnection state transitions to failed. If more than 30 seconds has elapsed during this transition, the call will disconnect and raise an error 31003.


  • Added de1-ix to valid list of regions.
  • Added Device.version to return sdk version
  • When applicable, errors emitted through Device.on('error') and Connection.on('error') now contain a twilioError field, providing more information about the error. This twilioError represents the new TwilioError format that will become the default Error format in 2.0.
// Error object
  code: number,
  message: string,
  // New twilioError property
  twilioError: {
    causes: Array<string>,
    code: number,
    description: string,
    explanation: string,
    solutions: Array<string>,
    message: string,
    stack: string


  • Fixed an issue causing local environment information to get bundled into the build artifact in local npm builds.
  • Fixed an issue where ringing will not stop when network is disconnected.

1.7.6 (Jul 23, 2019)


Automatic Media Reconnection

This feature was first introduced in 1.7.4 and was enabled by default. With this release, we have introduced the enableIceRestart reconnect flag to enable or disable Automatic Media Reconnection. The default is disabled. This will allow you to transition your code to utilise this feature. Example usage:

Twilio.Device.setup(TOKEN, { enableIceRestart: true });


  • We now show a more descriptive error in the console if WebRTC support isn't detected when not loaded over https.


  • Fixed an issue where active connection was getting disconnected when the token expired.
  • Fixed an issue where an answer during ICE reconnection was applied without a valid offer, resulting in the console error: Failed to set remote answer sdp: Called in wrong state: kStable.

1.7.5 (July 5, 2019)


  • Checking whether plan-b or unified-plan is default on the browser now happens on Device.setup() or on device initialization with a token, instead of on page load. This offloads creation of an RTCPeerConnection until we know Device will actually be used on the page.


  • Fixed an issue where ICE restarts would continue to retry when a call got disconnected while ringing.
  • Device.destroy() now properly disconnects all connections.
  • Fixed an issue where an answer was applied multiple times after creating an offer, causing console errors.
  • Fixed an issue where low-bytes warning was raised if total bytes sent and received was zero or not supported, potentially causing some issues in Edge preventing audio from being heard after an ICE restart.
  • Fixed an issue where ICE restart would not stop when connection drops on Firefox, causing console errors.


Updated July 16, 2019

The introduction of Automatic Media Reconnection in 1.7.4 is enabled by default. This functionality may affect program flow if you rely on Device.on('error', ...) with error code 31003 to update your UI or reconnect logic. This error is not thrown at the time of media interruption any longer. It is now sent after ICE restart is attempted and fails which may take 10s of seconds.

1.7.4 (June 21, 2019)


Automatic Media Reconnection

A call may be inadvertently disconnected when media is temporarily lost. With this release, we will attempt to reconnect the media before dropping the call with a process known as ICE restart.

If you are relying on Device.on('error', ...) with error code 31003, to update your UI or to initiate a reconnect, you will need to update your code to use Device.on('offline', ...) instead. The 31003 error code may not be reported for some time as ICE restarts are continually attempted.

Updated July 16, 2019

We have identified this as a potential breaking change and we will include an opt-in feature switch in the 1.7.6 release. We apologize for any inconvenience this may have caused you.


  • ICE Connections will now attempt to reconnect when they transition to the failed state, rather than immediately disconnecting.
  • We now report bytesSent and bytesReceived within the last second in the webrtc sample object (RTCSample).
  • We now begin monitoring for warnings 5 seconds after the start of a call (originally at 20 seconds).


  • Fixed a bug where changing the input device then later calling Connection.mute() will not work.
  • Fixed a bug causing some signaling errors to not trigger an error event from Connection.


The following known issues will be addressed in an upcoming 1.7.5 release:

  • ICE restarts may continue after successfully reconnecting, or a call has ended. This is benign, but may cause errors to be visible in the browser console.
  • ICE restarts may begin after 5 seconds in Edge 42, causing audio loss for the local client. This does not affect Edge 44.

1.7.3 (May 16, 2019)


  • We now report audio codec and whether DSCP is enabled to Insights Metrics.
  • Added new getter on Connection, Connection.codec, which will be populated with the audio codec used in the call as soon as the SDK receives that information from WebRTC. We currently do not get the audio code from FireFox.
  • We now emit a webrtc sample object (RTCSample) every second through a new event, Connection.on('sample').


  • Fixed a bug causing the input stream to not be released after a Connection is created without calling Device.audio.setInputDevice and then later calling Device.audio.setInputDevice during the call when using a browser that supports the unified-plan SDP semantic.
  • Fixed an issue where audio ring tone plays on a different output device after reconnecting an external output device.

1.7.2 (May 3, 2019)


  • Fixed an issue where some audio resources weren't being released after a call. Thank you to 西口瑛一(Eiichi Nishiguchi) 土橋雅一(Masakazu Tsuchihashi) and Leverages Co., Ltd. for helping us isolate this issue.

1.7.1 (Apr 29, 2019)

Unified Plan support

  • Added support for Unified Plan.
  • With this version, twilio-client.js uses the browser's default SDP format. Unified Plan SDP format is the default format used by Google Chrome 72+, Safari 12.2+, and Firefox since forever.
  • Note If you are using twilio-client.js versions 1.7.0 or older, changing audio input devices during a call will break on Safari 12.2 onwards.
  • See this advisory for SDP format migration impact.


Updated the algorithm used to report the "Audio input level" and "Audio output level" Insight metrics. The levels are obtained directly from an AudioContext and are no longer read out from webrtc's legacy stats.

1.7.0 (Apr 4, 2019)


Opus and Codec Preference API

Opus and PCMU are the two codecs now offered and accepted by Twilio Client JS.

For 1.7 and all further 1.x releases, G.711 (PCMU) will continue to be the preferred codec offered. This is to avoid any potential breaking changes.

The following code illustrates how to make Opus the default codec:

var device;
// Setup Twilio.Device
device = new Twilio.Device(YOUR_TOKEN, {
    codecPreferences: ['opus', 'pcmu']

The option codecPreferences can be passed in when instantiating a Device instance or when calling Device.setup to set the codecs preference. The default is set to [‘pcmu’, ‘opus’]

1.6.10 (Mar 20, 2019)

  • Fixed a DSCP bug, which was causing the dscp flag to be ignored in Chrome due to a breaking change introduced in Chrome M72.

1.6.9 (Feb 21, 2019)

  • Added device.audio.setAudioConstraints() and device.audio.unsetAudioConstraints(). These methods allow setting a MediaTrackConstraints object to be applied to every time device.audio.setInputDevice() is called, and any time an active input device is lost and the SDK gets new user media to fall back to another input device. If an input device is already set via device.audio.setInputDevice(), these methods will immediately call setInputDevice() internally and return the resulting Promise, otherwise they will return a resolved Promise. The currently set audio constraints can be seen on the new read-only field, device.audio.audioConstraints, which defaults to null.


device.audio.setAudioConstraints({ echoCancellation: true });
await device.audio.setInputDevice('default');
// Now we have a live input audio track, opened with echoCancellation:true
  autoGainControl: false,
  echoCancellation: false,
  noiseSuppression: false,
}).then(() => {
  // We successfully applied the new constraints and should automatically hear the difference.
  // Future calls to setInputDevice will also use these constraints until they're cleared.
}, err => {
  // Something went wrong, most likely err is an OverconstrainedError. Let's roll back.
  await device.audio.unsetAudioConstraints();
  // We should now have a working input audio track again

1.6.8 (Feb 13, 2019)

  • Applied a workaround to a Chrome regression introduced in M72 affecting speakerDevices.test() and ringtoneDevices.test().
Browser Support
  • We are now using RTCP values for RTT when available. Initially, this will not affect Chrome because Chrome has not yet implemented support. Additionally, having access to RTT will allow Firefox to calculate and report MOS, however FireFox is currently affected by a regression causing jitter to be reported as 0, which may make MOS scores appear slightly higher until it's patched by Mozilla.

1.6.7 (Feb 12, 2019)

  • Now sending ice gathering state change events to Insights as ice-gathering-state.
  • Fixed a regression introduced in 1.6.0 causing falsey TwiML params (undefined, null, 0, false) to be stripped.
  • Twilio.Device.audio.disconnect() will now toggle whether the disconnect sound should play while already on an active call.
  • Increased default websocket backoff maximum from 3000ms to 20000ms, and added the backoffMaxMs option to Device.setup() options that takes a time in milliseconds to override this default. The minimum allowable value is 3000ms. Example:Device.setup(token, { backoffMaxMs: 45000 });

1.6.6 (Feb 5, 2019)

Dependency Updates
  • Updated ws dependency to latest. Only affects npm package because the CDN artifact of twilio.js uses the browser's WebSocket implementation.

1.6.5 (Dec 3, 2018)

  • Fixed an issue introduced in 1.6.3 preventing metrics from being published to Insights.

1.6.4 (Nov 30, 2018)

  • Added NetworkInformation data to a new Insights event, network-change, which is sent first when a new Connection is established, and then any time thereafter the network information changes. See the support browser chart here.

1.6.3 (Nov 19, 2018)

  • Stopped sending Insights events that aren't associated with a CallSid or TempCallSid as they can't be tracked.
  • Added Device.setup option { fakeLocalDTMF: true } that uses imitation DTMF sounds instead of the default real DTMF sounds, preventing an issue where DTMF tones would sometimes register twice.

1.6.2 (Nov 8, 2018)

  • Updated default RTCConfiguration object to ensure forward compatibility when plan-b is deprecated.
  • Added an rtcConfiguration field to IDeviceOptions, which takes an RTCConfiguration object that gets passed to any created RTCPeerConnections. Example:
Device.setup(token, {
  rtcConfiguration: { iceTransportPolicy: 'relay' },

1.6.1 (Oct 3, 2018)

  • Re-assigning the master output device mid-call, particularly when calling device.disconnectAll(), will no longer throw an exception or pause script execution.
  • Fixed closeProtection feature
  • Added EventEmitter interface (on, addListener, removeListener, etc...) to Device singleton.

1.6.0 (Aug 29, 2018)

  • Added the ability to receive and handle incoming calls while on an active call behind a new flag, allowIncomingWhileBusy. When set to true, Device's default behavior of silently ignoring the incoming call is removed, and the incoming call will instead cause Device to emit an "incoming" event. If accepted, the prior active call will be immediately disconnected, and the incoming call will be accepted, replacing the prior active call.
Twilio.Device.setup(token, { allowIncomingWhileBusy: true });
  • Added support for custom incoming parameters from TwiML as Map<string, string> Connection.customParameters. When a TwiML application sends custom parameters using the <Parameter> noun, these parameters will be added to Connection.customParameters. For example:
<?xml version="1.0" encoding="UTF-8"?>
      <Parameter name="foo" value="bar"/>
      <Parameter name="baz" value="123"/>
device.on('incoming', connection => {
  assert.equal(connection.customParameters.get('foo'), 'bar');
  assert.equal(connection.customParameters.get('baz'), '123');

Note that the following restrictions apply to the Parameter noun:

  • Parameter name must be a string, up to 32 bytes.
  • Parameter value must be a string, up to 128 bytes.
  • Up to 8 parameters can be sent per dial.

1.5.2 (Nov 29, 2018)

  • Updated default RTCConfiguration object to ensure forward compatibility when plan-b is deprecated.

1.5.1 (Aug 15, 2018)

  • Updated Insights logic to point to new endpoint, fully supporting Insights when using Access Tokens

1.5.0 (Aug 08, 2018)

  • Twilio.Device may now be instantiated multiple times via
const device = new Twilio.Device(token, options);
  • Twilio.Device.setup() may now be called with Access Tokens, in addition to Capability Tokens.
  • Twilio.Device.destroy() will now completely clear out the Device, allowing Device.setup() to be called with a new set of options
  • We now ensure all Audio resources are cleaned up after closing a Connection
  • Twilio Client is moving toward the standard EventEmitter interface, meaning events should be managed with .on(eventName, handler) and .removeListener(eventName, handler), replacing our legacy handlers (such as .accept(handler), .error(handler), etc...). The following methods are deprecated:

These have been replaced with the following EventEmitter events:

Device.on('cancel', handler)
Device.on('connect', handler)
Device.on('disconnect', handler)
Device.on('error', handler)
Device.on('incoming', handler)
Device.on('offline', handler)
Device.on('ready', handler)
Connection.on('accept', handler)
Connection.on('cancel', handler)
Connection.on('disconnect', handler)
Connection.on('error', handler)
Connection.on('mute', handler)
Connection.on('reject', handler)
Connection.on('volume', handler)

Note that there is no Connection#ignore event. The Connection.ignore(handler) method is actually a backward-compatible listener for the Connection.on('cancel', handler) event.

1.4.35 (Nov 29, 2018)

  • Updated default RTCConfiguration object to ensure forward compatibility when plan-b is deprecated.

1.4.34 (Aug 29, 2018)

  • Fixed an issue causing disconnected sound to not play by default.

1.4.33 (Jul 05, 2018)

  • Updated AudioPlayer dependency to the newly published @twilio/audioplayer package.

1.4.32 (Apr 19, 2018)

  • Fixed a regression introduced by 1.4.31 (rolled back on Apr 18) causing region passed to Device.setup to be ignored.

1.4.31 (Apr 16, 2018)

  • Fixed a WebSocket issue occasionally resulting in "Cannot register. Token not validated." errors.

1.4.30 (Mar 28, 2018)

  • Added Twilio.Device.isSupported flag which should be true if WebRTC or ORTC is supported. If false, it's an indicator that Device.setup should not be called (it will throw an unsupported exception).
  • Fixed an issue where an internal listener wasn't being cleaned up when disconnecting a call, resulting in EventEmitter warnings when opening more than 10 calls in a row.

1.4.29 (Mar 6, 2018)

  • Fixed a build issue causing the twilio-client npm package to fail when run through webpack or browserify.

1.4.28 (Feb 28, 2018)

  • Added a fallback for when posting metrics to Insights fails, so that a warning is logged in the console rather than an exception being thrown.

1.4.27 (Jan 31, 2018)

  • Fixed an issue causing Insights timestamps to be undefined and breaking application flow in some environments.
  • Fixed an issue causing one-way audio for all calls after the first when using Device.audio.setInputDevice()
  • Fixed an issue causing sounds not to play correctly in Chrome when a non-default output device was selected by Device.audio.speakerDevices or Device.audio.ringtoneDevices.

1.4.26 (Dec 8, 2017)

  • Fixed an issue causing input audio to be lost after calling Device.audio.setInputDevice('default') and then removing and replacing the USB headset.
  • Fixed an issue causing outbound calls to break after the final audio output device was removed and replaced.
  • Removed circular references so that the Connection object can be serialized.
  • Fixed an issue causing WebSockets to become unrecoverable when the token expired while the socket is offline or disconnected.

1.4.25 (Nov 15, 2017)

Feature support
  • Added support for the answerOnBridge feature of TwiML by adding a new ringing Connection state and Connection#ringing event behind the flag: Twilio.Device.setup(token, { enableRingingState: true }). With both the answerOnBridge property and the enableRingingState flag enabled in the consuming application, the Connection state is now be more granular:
    • ringing state is transitioned to when the callee is notified of the incoming call
    • open state is transitioned to when the callee has accepted the call
  • Fixed an issue causing the Device.sounds deprecation warning to be logged every time the library was loaded.
  • Fixed an uncommon issue causing "Cannot call register of undefined" errors when destroying the Device.

1.4.24 (Sep 21, 2017)

Browser Support
  • Removed babel libraries, which were causing increased file size and clashing with the same libraries included in consuming applications.
  • Enabled volume support, as Safari's support of AudioNode is now stable.

1.4.23 (Sep 19, 2017)

Browser Support
  • Added experimental support for Safari 11. All functionality has been enabled in Safari 11, with a couple caveats:
    • Audio output selection and availabeOutputDevices are disabled as Safari does not yet support HTMLAudioElement.setSinkId
    • The volume APIs are temporarily disabled in Safari as a related WebAudioAPI feature was sometimes causing tabs to crash in our testing. We will be re-evaluating this and looking to re-enable this feature going forward.

1.4.22 (Sep 12, 2017)

  • Fixed a bug causing the ringtones of multiple incoming calls to stack, and then continuing to ring after one is answered.
  • Fixed a bug causing Electron applications to report one-way audio.
  • Fixed a bug causing additional websockets to be created when Device.setup is called while the existing websocket is temporarily disconnected.
  • Fixed a bug causing a tab to play the incoming ringtone indefinitely in the case where an unfocused tab receives an incoming call, and is then focused after that call is canceled.

1.4.21 (Aug 11, 2017)

  • Insights token should now correctly update when Device.setup is called with a new token.
  • Any changes made to the input/output device selection while a call is incoming should now always be respected.

1.4.20 (Jul 14, 2017)

  • Fixed a bug in Chrome causing 0 jitter to be reported as undefined, and MOS to be reported as 1

1.4.19 (Jul 13, 2017)

  • Fixed a bug causing the wrong RTCStats timestamps to be used, sometimes resulting in seemingly missing Insights data.

1.4.18 (Jul 11, 2017)

  • Fixed a race condition causing the incoming ringtone to continue ringing after a call had already been accepted or rejected.
  • Completely removed incoming call sound duration. Once an incoming call is accepted or rejected, the ringtone will stop immediately in all cases.

1.4.17 (Jul 6, 2017)

  • Added support for the new interconnect region aliases: ie1-ix (Ireland), us1-ix and us2-ix
  • Fixed a bug causing constant audio input level warnings to be raised in newer Chrome versions
  • Minimum incoming call sound duration has been reduced from 2000ms to 100ms

1.4.16 (Jun 19, 2017)

  • Reverted behavior of Device.activeConnection() to return the first received incoming call when there is no active, ongoing call. This behavior was inadvertently changed in 1.4.15. In the next breaking release, this behavior will be changed so that Device.activeConnection() correctly only returns the active connection if one exists.

1.4.15 (2017年6月15日)

  • 新規トークンの再登録後の発信通話中に新しい通話が着信した際、それが無視されるのではなくデバイスへの着信を引き起こす不具合を修正しました。
  • wsの依存関係を削除しました。 現在は、ネイティブのWebsocketを使用しています。 これによりよりファイルサイズが少なくなり、またES5との完全な互換性が保たれます。
  • 標準のWebRTC統計が実装され、またgoogle-接頭辞付きのものについても後方互換性を維持するため引き続きご利用いただけます。
  • ドイツ地域のサポートが追加されました de1

1.4 Public Beta: 1.4.14 (Apr 3, 2017)

  • Fixed a bug sometimes causing "Twilio not defined" failures in Edge.
  • Fixed Connection.mute() so that the call stays muted after switching input devices.
  • Updated Connection.sendDigits to use the new RTCDTMFSender in Firefox 52 and above.
API の変更点
  • Added connection.getRemoteStream() and connection.getLocalStream() to retrieve the local/remote streams being used in the Connection.

1.4 Public Beta: 1.4.13 (Mar 17, 2017)

  • A disconnected input device should now be usable by Device.audio.setInputDevice() after being reconnected.

1.4 Public Beta: 1.4.12 (Mar 08, 2017)

  • Twilio's ORTC adapter will now be used over the native WebRTC components introduced in Edge build 15019. This distinction will remain until Edge's native WebRTC support satisfies all of Twilio Client's dependencies.
  • The incoming ringtone sound should now continue playing when one of multiple incoming calls is rejected, ignored or canceled and other incoming calls remain.

1.4 パブリックベータ: 1.4.11 2017年2月24日

  • 入力デバイスフォールバック - アクティブな入力デバイスが失われたとき、ChromeおよびEdgeにおいて予備の入力デバイスにフォールバックします。 Firefoxでは現在、アクティブな入力が失われたことを検出することができません。
  • [Edge] Edgeでの入力デバイスの切り替えがフルサポートされるようになりました。
  • [FF] 複数のオーディオ入力デバイスを同時に開くことのできない制限により、Firefoxでは Device.audio.setInputDevice のサポートは完全に無効化されます。
  • [FF] 追加で、Firefoxのオーディオ入力デバイスの制限のためにユーザー・メディアのリクエストが失敗した時の識別を助けるため、Twilio Clientの getUserMedia リクエストの失敗に役立つエラーメッセージが追加されました。
  • ブラウザー互換性の完全なリストについては、バージョン1.4概要ページの末尾をご参照ください。
  • Device.audio.unsetInputDevice()Device.incoming()ハンドラー内で同期的に呼び出された場合、エラーをスローしなくなりました。
  • トラックが常に正しく停止するようになりました。 Device.audio.inputDeviceがnullでアクティブな通話がない場合、すべてのユーザーメディアが正しく解放されるようになりました。
  • Device.audio.setInputDevice() が、発着信側のいずれかがClientの場合に正しく機能するようになりました。
  • 着信音の読み込みまたは再生に失敗した場合、2秒の最大タイムアウト値の後にDevice.incomingハンドラーが呼び出されます。 (警告の追加またはDevice.Incoming上のプロンプトによって実行の中断で再生中の着信音が抑制されないようになりました。 Chromeでは、一時停止したスクリプトの実行によってループの動作が抑制されるため、着信音は1回しか再生されません。
  • 新しいデバイスが見つかったとき、コンソールに例外が記録されなくなりました。
  • 新規Interconnectリージョンの追加: ie1-tnx
CSP (=Content Security Policy) に準拠しました。
  • eval命令を含む古い依存関係が削除され、今後現れることはありません。

1.4 公開ベータ: 1.4.10 (2017年1月18日)

  • Device.setup が呼ばれた際、Deviceを新規トークンのデータで適切に更新するようになりました。
  • ICE生存確認に失敗した場合、以前は Connection#error がエミットされていたところを、現在は次のイベントがエミットされるようになりました: Connection#warning これで、致命的なICEイベントとそうでないものとを区別できるようになりました。

1.4公開ベータ: 1.4.9 (2016年12月20日)

  • オーディオ出力の選択 - 新しいDevice.audio APIを使用すると、ブラウザーが対応している場合(本稿執筆時にはChrome 49以降)に、開発者はクライアントでどのオーディオ出力デバイスをサウンドの再生に使用するか指定できるようになります。 希望する場合は、着信音は専用のオーディオチャネルに分けることで通話中の音声とは別の一連のオーディオデバイスから再生させることができます。
  • オーディオ入力選択 - 加えて、Device.audio APIを使用すると開発者は発信通話時に入力デバイスを切り替えたり、通話の発信に先立って入力デバイスを設定し、これをテストすることができます。
  • ボリュームインジケーター - Twilio ClientのConnectionクラスが通話の入出力音量を報告できるようになり、開発者がUIにリアルタイムなボリュームインジケーターを簡単に表示できるようになりました。
  • カスタムサウンド - Twilio ClientはDevice.Setupにカスタムサウンドを渡せるようになり、Twilioの既定のサウンドに代わって使用できるようになりました。
  • Twilio Interconnect (TNX) Support - Twilio Client now supports connecting through Twilio Interconnect (TNX) for certain regions. As of writing, connecting to regions us1 and us2 on TNX connection provisioning is supported in Client via us1-tnx and us2-tnx region parameters, respectively.

1.4 公開ベータ: 1.4.4 (2016年12月9日)

  • 品質に関する警告 - Twilio ClinentConnecitonクラスが、潜在的な通話品質の問題の検出時または解消時にリアルタイムな警告イベントやクリアーイベントをエミットするようになりました。
  • ユーザーフィードバック - Twilio ClientのConnectionクラスが、Connection.postFeedback APIを通じて通話品質についてのユーザーフィードバックを受け付けます。

API の変更点

  • Device.sounds - Device.soundsについて非推奨の警告を追加し、この機能はDevice.audio APIに移動されました。


  • クローズ保護機能が有効なトークンが期限切れを迎えても機能し続けるようになりました。
  • Connection.acceptが2度呼び出されたときにブレーキング例外をスローしなくなりました(とはいえ1度しか呼ばないことを推奨します)。

twilio.js 1.3

1.3.21 (Aug 11, 2017)

  • Insights token should now correctly update when Device.setup is called with a new token.

1.3.20 (Jul 18, 2017)

  • Fixed a bug in Chrome causing 0 jitter to be reported as undefined, and MOS to be reported as 1
  • Fixed a bug causing the wrong RTCStats timestamps to be used, sometimes resulting in seemingly missing Insights data.

1.3.19 (Jul 6, 2017)

  • Added support for the new interconnect region aliases: ie1-ix (Ireland), us1-ix and us2-ix
  • Added support for German reagion 'de1'
  • Added support for standard RTCStats object

1.3.18 (Apr 3, 2017)

  • Updated Connection.sendDigits to use the new RTCDTMFSender in Firefox 52 and above.

1.3.17 (Mar 22, 2017)

  • The constant-audio-output-level is now reported as an INFO level event, rather than WARNING in order to reduce false positives. This event may fire if the other side of the call is muted.

1.3.16 (2017年1月18日)

  • Device.setup が呼ばれた際、Deviceを新規トークンのデータで適切に更新するようになりました。
  • ICE生存確認が接続が途切れたり再接続されたときに適切なInsightsイベントを生成するようになりました。

1.3.15 (2016年11月11

  • 通話の最初の10〜15秒間の間に謝って検出される可能性のある、比較的新しいバージョンのChromeにおける異常な高RTT値を防ぐため、通話の最初におけるネットワーク障害の監視の有効化前の遅延を増加させました。

1.3.14 (2016年11月2日

  • 内部のロジックが原因でInsights内で複数回ignored-by-localイベントが記録される不具合を修正しました
  • ロギングを向上させるため、その他のInsightsの項目を追加/変更しました。

1.3.13 (2016年10月26日

  • マイクへのアクセスの失敗についてのブラウザー固有のエラー情報を追加しました (31201) 。

1.3.12 (2016年8月22日

  • クローズ保護は、通話がアクティブな場合にはトークンが失効してもなお正常に機能します。
  • Insights 統計のペイロードに追加のフィールドを追加されました。

1.3.11 (2016年5月27日)

  • Twilio Insights に送信されていたペイロード形式から誤ったフィールドを削除しました。・

1.3.10(2016 年 5 月 20 日)

  • Twilio Insights に送信される通話品質警告イベントが調整されました。

1.3.9(2016 年 5 月 6 日)

  • Twilio Insights に送信されるライフサイクルイベントが増えました。新しいスキーマに合わせて既存のライフサイクルイベントが調整されました。

1.3.8(2016 年 5 月 6 日)

  • Twilio Insights に送信されるイベントに RTC の監視と警告が追加されました。

1.3.7(2016 年 4 月 18 日)

  • ライフサイクルイベントロギングに関するさまざまなバグが修正されました。
  • 内部の通話の品質メトリクスのロギングをさらに改善しました。

1.3.6(2016 年 4 月 8 日)

  • 内部の通話の品質メトリクスのロギングを改善しました。

1.3.5 (2016 年 3 月 11 日)

  • Chrome 拡張機能でのアセットロードを修正しました。

1.3.4 (2016 年 2 月 25 日)

  • リージョンの選択 – 開発者が、ユーザーを特定の Twilio クライアントデータセンターに接続することを選択できるようになりました。または、引き続き Twilio の Global Low Latency ルーティングで遅延が最小のパスを選択することもできます。詳細については、適切なドキュメントを参照してください。
  • Twilio クライアントメディアの静的 IP アドレス – Twilio クライアントで、静的な IP アドレス範囲からのメディア接続を確立しました。Twilio で現在使用されている IP アドレスの範囲のリストについては、Twilio クライアントのドキュメントを参照してください。IP アドレス範囲のリストについては、このドキュメントを参照してください。
  • Microsoft Edge ベータ版での ORTC のサポート- Microsoft Edge ベータ版で ORTC をサポートするようになりました。Microsoft Edge で Twilio Client を使用して、Flash なしで電話をかけたり、受けることができるようになりました。
  • DSCP のサポートTwilio クライアント 1.3 では、DSCP をサポートするブラウザで、DSCP がデフォルトで有効になります。
  • Presence - twilio.js 1.3 では、プレゼンスに対するサポートはなくなりました。
  • Flash のサポート - twilio.js 1.3 では、Flash に対するサポートはなくなりました。

API の変更点

  • error() のハンドラー関数に渡されたエラーに info プロパティが含まれなくなりました。このプロパティは以前、flash.net.NetConnection オブジェクトに含まれていました。
  • Twilio.Device.setup() params 引数で rtc を許容しなくなりました。 API がブラウザで使用可能な場合、または Flash がオプションでなくなった場合には、Twilio クライアントは WebRTC または ORTC を使用します。
  • presence() 削除されました。Presence に対する Twilio クライアントでのサポートはなくなりました。
  • getMediaEngine() Flash がサポートされなくなったため、削除されました。

1.2 (2016 年 2 月 25 日)


  • Presence - Presence 機能は twilio.js 1.3 で削除されたため、この機能に対し、廃止される予定に関する警告が追加されました。
  • Flash のサポート - Flash 機能は twilio.js 1.3 で削除されたため、この機能に対して、廃止される予定に関する警告が追加されました。

1.2 (2015年10月6日)

  • Google Chromeで"MediaStream.stop is deprecated" の警告が発生しないよう修正
  • Google Chrome で "MediaStream.ended is deprecated" の警告が発生しないよう修正
  • twilio.js を許可し他の Twilio JavaScript SDKs を同じページに包含
  • sendDigits RTCDTMFSender の利用をサポート

1.2 (2015年9月18日)

  • Chorome 45で稀に通話を許可(開始)できない不具合を解消
  • リモートトラブルシュート機能を向上

1.2 (2015 年 8 月 12 日)

  • Flash ユーザーが simplePermissionDialog オプションを使用すると通話を発信または受信できなくなる可能性があるという問題を解決しました。
  • Chrome のバージョン 26 より古いバージョンのサポートを有効にする互換性コードが、非標準 WebRTC 実装に影響を及ぼさないように書き換えられました。

1.2 (2014 年10 月 23 日)

  • ICE 切断時に、エラーコード 31003 と共に "ICE liveness checks failed. May be having trouble connecting to Twilio." というエラーを発生させます。以前にアクティブだった接続が正しく接続されなくなっていることをブラウザーが認識すると、このエラーが発生する可能性があります。これは、ネットワーク状態の変更などが原因で起こる場合があります。
  • ICE 失敗時に、エラーコード 31003 と共に "ICE negotiation with Twilio failed. Call will terminate." というエラーを発生させて、通話を終了します。これは、ブラウザーが Twilio の WebRTC ゲートウェイに接続できない場合に起こる可能性があります。このエラーの一般的な原因には、Twilio のメディアサーバーへの接続をブロックするファイヤーウォールルールや発信 UDP をブロックするファイヤーウォールルールが含まれます。
  • 通話品質に関する問題のトラブルシューティングを改善するために、追加のクライアントサイド WebRTC 統計をログに記録します(audioInputLevel および audioOutputLevel)。

1.2 (2014 年 9 月 29 日)

  • 登録されるイベントハンドラーが多すぎる場合は、より有用な警告を提供します。
  • 内部イベントハンドラーが登録解除されていなかったバグを修正しています。

1.2 (2014 年 9 月 16 日)

  • 特定のマイクを選択したり、オートゲインコントロールなどの機能をオフにしたりするために新しい audioConstraints 設定を追加します。
  • 通話品質に関する問題のトラブルシューティングのためにクライアントサイド WebRTC 統計を収集します。
  • WebRTC または Flash が使用されているかどうかをチェックするために、新しい関数 Twilio.Device.getMediaEngine() を追加します。
  • エラーハンドラーが Twilio.Device 上で登録されている場合は、ケイパビリティ トークンの期限切れ時に例外を発生しないようになりました。
Rate this page:


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