npm i --save nativescript-twilio
- 版本:0.14.0
- GitHub:
- NPM: https://npmjs.net.cn/package/nativescript-twilio
- 下载量
- 昨天:0
- 上周:0
- 上个月:0
NativeScript Twilio
nativescript-twilio
是一个插件,它暴露了 Twilio Voice SDK,这是领先的语音解决方案平台。
注意:目前它仅用于进行外拨电话,适用于 Android 和 iOS
先决条件 / 要求
-
拥有 Twilio 账户,其中包含 API 密钥和配置的 TwiML 应用。
-
服务器具有 URL 终端,该终端返回包含有效 访问令牌 的 JSON。您可以通过下载以下之一来设置自己的服务器
在您的 Nativescript 应用中安装插件
tns plugin add nativescript-twilio
用法
演示应用
设置
-
如果您想避免使用正确的值(后端端点 URL、呼叫者电话号码等)填充输入字段,您可以编辑
demo/app/main_view_model.ts
文件并设置accessTokenUrl
、authorizationHeader
、senderPhoneNumber
和phoneNumber
变量。 -
为了接收来电,您需要在 Android 上设置推送通知,并在 iOS 上设置苹果的 VoIP 服务。因此,根据您的平台,您将需要
-
在 Android 上(注意:尚未实现)
-
在 iOS 上
- 创建 VoIP 服务证书,应用程序 ID 为
org.nativescript.demotwilio
。别忘了在创建应用程序后通过编辑苹果配置文件门户中的应用程序来配置推送通知。 - 使用您的 VoIP 服务证书创建推送凭据
- 配置 Xcode 项目的推送通知设置
- 接收来电
- 创建 VoIP 服务证书,应用程序 ID 为
-
运行演示应用
- 克隆存储库,
cd src
,然后运行npm run demo.android
或npm run demo.ios
。
集成到您的 NativeScript 应用中
- 在
main.ts
或app.ts
文件中,将以下代码放入以初始化 Twilio
import * as application from 'tns-core-modules/application';
import { initTwilio } from 'nativescript-twilio';
import { TwilioAppDelegate } from 'nativescript-twilio/delegate';
// The following endpoint should return the raw token in the request body
const accessTokenUrl = 'http://yourserver/path/to/access-token';
const accessTokenHeaders = {'Authorization': 'Token sometoken'};
initTwilio(accessTokenUrl, accessTokenHeaders);
if (application.ios) {
// register twilio app delegate in order to receive incoming calls
application.ios.delegate = TwilioAppDelegate;
}
- 在您的代码的某个位置(例如,在某个 UI 组件的
loaded
事件中)您需要设置呼叫监听器,该监听器将处理呼叫的连接事件
import { setupCallListener, setupPushListener } from 'nativescript-twilio';
// listener for inbound/outbound calls
const callListener = {
onConnectFailure(call, error) {
dialogs.alert(`connection failure: ${error}`);
},
onConnected (call) {
dialogs.alert('call connected');
},
onDisconnected (call) {
dialogs.alert('disconnected');
}
};
setupCallListener(callListener);
// listener for push notifications (incoming calls)
const pushListener = {
onPushRegistered(accessToken, deviceToken) {
dialogs.alert('push registration succeded');
},
onPushRegisterFailure (error) {
dialogs.alert(`push registration failed: ${error}`);
}
};
setupPushListener(pushListener);
- 在用于拨打外拨电话的组件中,放入以下代码
import * as dialogs from 'tns-core-modules/ui/dialogs';
import { getAccessToken, Twilio } from 'nativescript-twilio';
const phoneNumber = '+1555365432';
getAccessToken() // it will use the Twilio configuration set before
.then((token) => {
const twilio = new Twilio(token);
const call = twilio.makeCall(phoneNumber);
// example of muting the call after 10 seconds
setTimeout(() => {
console.log('Muting call after 10 seconds...');
call.mute(true);
}, 10000);
// example of disconnecting the call after 30 seconds
setTimeout(() => {
console.log('Disconnecting call after 30 seconds...');
call.disconnect();
}, 30000);
})
API
函数
函数 | 描述 |
---|---|
initTwilio(url: string, headers?: any) |
通过传递访问令牌后端端点初始化 Twilio |
getAccessToken(): Promise<string> |
请求后端访问令牌。返回一个包含检索到的令牌的 Promise |
setupCallListener(listener: any) |
设置呼叫监听器,传递一个具有 onConnectFailure 、onConnected 和 onDisconnected 回调的对象 |
setupPushListener(listener: any) |
设置推送通知监听器,传递一个具有 onPushRegistered 和 onPushRegisterFailure 回调的对象 |
unregisterPushNotifications(token: string, deviceToken: string, callback?: (error: any) => void) |
注销推送通知(来电) |
Twilio 方法
方法 | 描述 |
---|---|
makeCall(senderPhoneNumber: any, phoneNumber: any, options?: any): Call |
发起外拨电话。 |
toggleAudioOutput(toSpeaker: boolean) |
仅限 iOS 设置音频会话输出到扬声器或不是。 |
呼叫方法
方法 | 描述 |
---|---|
mute(value: boolean) |
静音通话。 |
disconnect() |
挂断通话。 |
许可证
Apache许可证版本2.0,2018年4月