节点数
Bandwidth 数字 API 的节点Js客户端库
开发者 Docs
其他节点 SDK
- 通讯: https://github.com/ Bandwidth/node-messaging 页面存档备份,存于互联网档案馆
- 声音 : https://github.com/ Bandwidth/node-voice 页面存档备份,存于互联网档案馆
支持的版本
节点版本 7 及以上 此 SDK 稳定
| 版本 | 支助级别 | |
|---|---|---|
| < 7 个 | 不支持 | |
| > 7个 | 支助 |
发布注释
| 版本 | 页:1 |
|---|---|
| 1.1.0 国家 | 已添加导入 tn 功能, 基于附加承诺 Async 函数 |
| 1.2.0 (中文(简体) ) | 添加 CSR 查询功能 |
| 1.2.1 国家 | 固定订阅列表功能. 示例代码 : 示例/ 订阅 list and delete |
| 1.2.2 国家 | 读取 Typo 为 RemoveImportedTnOrder |
| 1.3.0 (单位:千美元) | 添加紧急呼叫通知端点 |
| 1.4.0 (中文(简体) ) | 添加了 Tnoptions 端点和功能,同时在 sip 端端添加了 SMS 选项. |
| 1.6.0 (简体中文) | 为 sip 同伴添加创建源代码设置 |
| 1.7.0 (单位:千美元) | 添加产品入账 |
| 1.7.1 联合国 | 修复 Tn 选项. create () 回调错误 |
安装
运行
npm install @bandwidth/numbers
使用量
var numbers = require("@bandwidth/numbers");
//Using client directly
var client = new numbers.Client("accountId", "userName", "password");
numbers.Site.list(client, function(err, sites){...});
//Or you can use default client instance (do this only once)
numbers.Client.globalOptions.accountId = "accountId";
numbers.Client.globalOptions.userName = "userName";
numbers.Client.globalOptions.password = "password";
//Now you can call any functions without first arg 'client'
numbers.Site.list(function(err, sites){
//Default client will be used to do this call
});
认证
SDK支持两种认证方法: OAuth2 客户端证书(首选)和基本验证(用户名/密码).
源代码中永远不要硬代码证书. 装入 clientId编号 :clientSecret (或 userName编号 :password)来自环境变量等安全来源或秘密管理器,例如:
numbers.Client.globalOptions.clientId = process.env.BANDWIDTH_CLIENT_ID;
numbers.Client.globalOptions.clientSecret = process.env.BANDWIDTH_CLIENT_SECRET;
OAuth2 客户证书( 首选)
var numbers = require("@bandwidth/numbers");
//Using client directly
var client = new numbers.Client("accountId", null, null, process.env.BANDWIDTH_CLIENT_ID, process.env.BANDWIDTH_CLIENT_SECRET);
numbers.Site.list(client, function(err, sites){...});
//Or you can use default client instance (do this only once)
numbers.Client.globalOptions.accountId = "accountId";
numbers.Client.globalOptions.clientId = process.env.BANDWIDTH_CLIENT_ID;
numbers.Client.globalOptions.clientSecret = process.env.BANDWIDTH_CLIENT_SECRET;
//Now you can call any functions without first arg 'client'
numbers.Site.list(function(err, sites){
//Default client will be used to do this call
});
何时 clientId编号 :clientSecret 设置,客户端在背景中自动获取并刷新 OAuth2 访问令牌,并透明地重复请求一次,如果它得到一个 401 反应。 如果同时配置了OAuth证书和一个用户名/密码字,则使用OAuth无记名符号.
要自己管理这个标志 而不是依靠自动更新,通过 { autoRefreshToken: false } 作为客户的 options 参数和参数 tempAccessToken数字 :
var client = new numbers.Client("accountId", null, null, "clientId", "clientSecret", {
autoRefreshToken: false,
tempAccessToken: "existingAccessToken"
});
基本认证
var numbers = require("@bandwidth/numbers");
//Using client directly
var client = new numbers.Client("accountId", process.env.BANDWIDTH_USERNAME, process.env.BANDWIDTH_PASSWORD);
numbers.Site.list(client, function(err, sites){...});
//Or you can use default client instance (do this only once)
numbers.Client.globalOptions.accountId = "accountId";
numbers.Client.globalOptions.userName = process.env.BANDWIDTH_USERNAME;
numbers.Client.globalOptions.password = process.env.BANDWIDTH_PASSWORD;
//Now you can call any functions without first arg 'client'
numbers.Site.list(function(err, sites){
//Default client will be used to do this call
});
同步方法
每个 API 调用中还包含一个 async 方法, 它返回要使用的承诺 .then 或者说 async编号 :await。 。 。 .
合成法是原始方法名称,使用 Async 页:1.
一些实例
numbers.Site.create数字 :numbers.Site.createAsyncnumbers.AvailableNumbers.list数字 :numbers.AvailableNumbers.listAsyncnumbers.Order.create数字 :numbers.Order.createAsync
列出可用数字的示例
回电
// Callbacks
numbers.AvailableNumbers.list(query, (err, availableNumbers) => {
if (err) {
console.log(err);
}
else {
console.log(availableNumbers);
}
});
承诺链
//Promise chaining
numbers.AvailableNumbers.listAsync(query)
.then(availableNumbers => {
console.log(availableNumbers);
})
.catch(e => {
console.log(e);
});
自动/等待
//Async/await
try {
const availableNumbers = await numbers.AvailableNumbers.listAsync(query);
console.log(availableNumbers);
}
catch (e) {
console.log(e)
}
实例
源树上有一个"示例"文件夹,显示每个API对象如何用简单的示例代码工作. 举例来说:
$ cd examples
$ cp config.js.example config.js
编辑配置( config.js)以匹配您的 IRIS 证书并逐一运行示例 。 譬如说.
node coveredRateCenters-sample.js
如果实例使用命令行参数, 您只需执行单个脚本即可获得使用 .
API 对象
一般原则
在从 API 取出对象时, 它总是会返回拥有客户端的对象 即时化,以便您可以调用依赖方法以及更新,删除.
示例
numbers.Site.create({siteObject}, function(err,item){
console.log("the site ID is: " + item.id);
item.delete(function(err,res){ //no need to pass the client again
});
});
每个实体都有获取、列表、创建、更新和删除方法.
所有属性都符合Javascript可读性,在苍蝇上转换为正版 选项.
账户
获得移动 Tns 顺序
var orders = numbers.Account.getMoveTnsOrders(function(err, res){
if (err){
console.log(err)
};
console.log(res);
});
创建移动 Tns 顺序
numbers = ["19195551234", "19195554321"]
data = {
CustomerOrderId: "abc123",
SiteId: "12345", // DESTINATION sub-account (site)
SipPeerId: "54321" // DESTINATION location (sip-peer) (optional - if not inclided, tn(s) will provision to default sip-peer)
}
data.telephoneNumbers = [numbers.map(number => {return {telephoneNumber: number}})];
numbers.account.moveTns(client, data, callback);
获取移动 Tns 顺序信息
numbers.account.getMoveTnsOrder(client, 'my-order-id-12345', callback);
获得移动 Tns 顺序历史
numbers.account.getMoveTnsOrderHistory(client, 'my-order-id-12345', callback);
应用程序
创建语音应用程序
var data = {
appName:"test app",
callInitiatedCallbackUrl: "http://example.com",
callInitiatedMethod: "POST",
callStatusCallbackUrl: "http://example.com",
callStatusMethod: "POST"
callbackCreds: {
userId: 'my-id',
password: 'my-password'
}
};
numbers.Application.createVoiceApplication(data, callback);
创建信件应用程序
var data = {
appName:"test app",
msgCallbackUrl: "http://example.com",
callbackCreds: {
userId: 'my-id',
password: 'my-password'
}
};
numbers.Application.createMessagingApplication(data, callback);
列出所有应用程序
numbers.Application.list(callback);
获取应用程序
numbers.Application.get(id, callback);
更新应用程序
numbers.Application.get(id, (err, app) => {
app.appName = "new name";
app.update(app, callback);
});
删除应用程序
numbers.Application.get(id, (err, app) => {
app.delete(callback)
});
获取与 SippPeers 相关的应用程序
numbers.Application.get(id, (err, app) => {
app.getSipPeers(callback);
});
可用数字
可用数字区域代码
var res = await numbers.AvailableNumbers.listAsync({areaCode:"919", quantity:"5"});
console.log(res);
可用数字区码和本地名
var res = await numbers.AvailableNumbers.listAsync({areaCode:"919", localVanity:"298", quantity:"5"});
console.log(res);
res = await numbers.AvailableNumbers.listAsync({areaCode:"919", localVanity:"2982", quantity:"5"});
console.log(res);
res = await numbers.AvailableNumbers.listAsync({areaCode:"919", localVanity:"29822", quantity:"5"});
console.log(res);
res = await numbers.AvailableNumbers.listAsync({areaCode:"919", localVanity:"298227", quantity:"5"});
console.log(res);
res = await numbers.AvailableNumbers.listAsync({areaCode:"919", localVanity:"2982272", quantity:"5"});
console.log(res);
可用的 NpaNxx
numbers.AvailableNpaNxx.list({areaCode:"818", quantity:5}, callback);
城市
numbers.City.list({"available":true, "state":"CA"}, callback);
覆盖率中心
numbers.CoveredRateCenter.list({"zip":"27601"}, callback);
断开连接的数字
获取账户断开的数字列表
numbers.DiscNumber.list({"areaCode":"919"}, callback);
断开连接数字
断接对象用于断开账户中的数字. 创建可跟踪的断开命令
创建断开连接
numbers.Disconnect.create("Disconnect Order Name", ["9195551212", "9195551213"], callback);
获取断开连接
numbers.Disconnect.get("orderId", {tnDetail:true}, callback);
向断开连接添加注释
var note = {userId: "my id", description: "Test"};
numbers.Disconnect.get("orderId", {tnDetail:true}, function(err,order){
order.addNote(note, callback);
});
获取断开连接的便条
numbers.Disconnect.get("orderId", {tnDetail:true}, function(err,order){
order.getNotes(callback);
});
德尔达
创建 Ddla
var dlda = {
customerOrderId:"Your Order Id",
dldaTnGroups: [
dldaTnGroup: {
telephoneNumbers: ["9195551212"],
subscriberType: "RESIDENTIAL",
listingType: "LISTED",
listingName:{
firstName:"John",
lastName:"Smith"
},
listAddress:true,
address:{
houseNumber: "123",
streetName: "Elm",
streetSuffix: "Ave",
city: "Carpinteria",
stateCode:"CA",
zip:"93013",
addressType: "DLDA"
}
}
]
}
numbers.Dlda.create(dlda, callback);
获取 Dlda
numbers.Dlda.get(id, callback);
获取 Dlda 历史
numbers.Dlda.get(id, function(err,dlda){
dlda.getHistory(callback);
});
列表 Dldas
numbers.Dlda.list({telephoneNumber:"9195551212"}, callback);
导入到账户
此路径一般不为 Bandwidth 账户所使用, 因此在本 API 中没有记录
在服务编号中
列表服务数字
numbers.InServiceNumber.list({"areaCode":"919"}, callback);
获取服务数字细节
numbers.InServiceNumber.get("9195551212", callback);
标签
创建
var data = {
customerOrderId:"A test order",
lidbTnGroups:{
lidbTnGroup:{
telephoneNumbers:["8048030097", "8045030098"],
subscriberInformation:"Joes Grarage",
useType: "RESIDENTIAL",
visibility: "PUBLIC"
}
}
}
numbers.Lidbs.create(data, callback);
带利德来
numbers.Lidbs.get(id, callback);
列表 属性
numbers.Lidbs.list({telephoneNumber:"9195551212"}, callback);
利比里亚国家警察检查员
检查利比里亚国家警察
var numbersList = ["9195551212", "9195551213"];
var fullCheck = true;
numbers.LnpChecker.check(numbersList, fullCheck, callback);
LSR 命令
创建 LSR 顺序
var data = {
pon:"Some Pon",
customerOrderId: "MyId5",
sPID:"123C",
billingTelephoneNumber:"9192381468",
requestedFocDate: "2015-11-15",
authorizingPerson: "Jim Hopkins",
subscriber:{
subscriberType:"BUSINESS",
businessName:"BusinessName",
serviceAddress: {
houseNumber:"11",
streetName: "Park",
streetSuffix: "Ave",
city:"New York",
stateCode: "NY",
zip: "90025"
},
accountNumber:"123463",
pinNumber:"1231"
},
listOfTelephoneNumbers: {
telephoneNumber:["9192381848", "9192381467"]
}
};
numbers.LsrOrder.create(data, callback);
获取 LSR 顺序
numbers.LsrOrder.get(id, callback);
列出 LSR 命令
numbers.LsrOrder.list({pon:"Some Pon"}, callback);
更新 LSR 顺序
numbers.LsrOrder.get("id", function(err, order){
order.requestedFocDate = "2015-11-16";
numbers.LsrOrder.update(order, callback);
})
获取 LSR 顺序历史
numbers.LsrOrder.get("id", function(err, order){
order.getHistory(callback);
});
获取 LSR 顺序注释
numbers.LsrOrder.get("id", function(err,order){
order.getNotes(callback);
});
添加 LSR 顺序注释
var note = {userId: "my id", description: "Test"};
numbers.LsrOrder.get("id", function(err, order){
order.addNote(note, callback);
});
命令
创建顺序
var order = {
name:"A Test Order",
siteId: 1111,
existingTelephoneNumberOrderType: {
telephoneNumberList:[
{
telephoneNumber:"9195551212"
}
]
}
};
numbers.Order.create(order, callback);
获取顺序
numbers.Order.get(id, callback);
列表顺序
numbers.Order.list(query, callback);
顺序区域代码列表
numbers.Order.get(id, function(err, order){
order.getAreaCodes(callback);
});
实例方法
// get Area Codes
order.getAreaCodes(callback);
// add note to order
var note = {userId: "my id", description: "Test"};
order.addNote(note,callback);
//get Npa Nxxs
order.getNpaNxx(callback);
// get number totals
order.getTotals(callback);
// get all Tns for an order
order.getTns(callback)
// get order history
order.getHistory(callback);
// get order notes
order.getNotes(callback);
导入端口
创建端口In
var data = {
siteId:1234,
peerId:5678,
billingTelephoneNumber: "9195551212",
subscriber: {
subscriberType: "BUSINESS",
businessName: "Company",
serviceAddress: {
houseNumber: "123",
streetName: "EZ Street",
city: "Raleigh",
stateCode: "NC",
county: "Wake"
}
},
loaAuthorizingPerson: "Joe Blow",
listOfPhoneNumbers: {
phoneNumber:["9195551212"]
},
billingType: "PORTIN"
};
numbers.PortIn.create(data, callback);
获取端口
numbers.PortIn.get("id", callback)
列表端口
var query = {pon:"a pon"};
numbers.PortIn.list(query, function(err, list){
console.log(JSON.stringify(list));
});
实例方法
// fetch instance using PortIn.get(callback, portIn)
portIn.update(data, callback);
portIn.delete(callback);
portIn.getAreaCodes(callback);
portIn.getNpaNxx(callback);
portIn.getTotals(callback);
portIn.getTns(callback);
portIn.getNotes(callback);
portIn.addNote(callback);
portIn.getActivationStatus(callback);
PortIn 文件管理
numbers.PortIn.get("id", function(err, portIn){
// Add File
portIn.createFile(fs.createReadStream("myFile.txt"), callback);
// Update File
portIn.updateFile("myFile.txt", fs.createReadStream("myFile.txt"), callback);
// Get File
portIn.getFile("myFile.txt", callback);
// Get File Metadata
portIn.getFileMetadata("myFile.txt", callback);
// Get Files
portIn.getFiles(callback);
});
端口输出
列表端口输出
var query = {"status":"complete"}
numbers.PortOut.list(query, callback);
获取端口
numbers.PortOut.get(id, callback);
费率中心
列表比率中心
var query = {"available":true, "state":"CA"}
numbers.RateCenter.list(query, callback);
SIP 对等点
创建 SIP 端点
var data = {
peerName:"A New SIP Peer",
isDefaultPeer:false,
shortMessagingProtocol:"SMPP", // `HTTP` for use with the v2 messaging API
siteId:selectedSite,
voiceHosts:[ // optional
{
host:{
hostName:"1.1.1.1"
}
}
],
smsHosts:[ // optional
{
host:{
hostName:"1.1.1.1"
}
}
]
};
numbers.SipPeer.create(data, callback);
获取 SIP 端点
numbers.SipPeer.get(siteId, sipPeerId, callback);
列表 SIP 端点
numbers.SipPeer.list(siteId, callback);
更新 SIP 端点
sipPeer.peerName = "Some new name";
sipPeer.update(sipPeer, callback);
删除 SIP 端点
numbers.SipPeer.get(function(err, sipPeer){
sipPeer.delete(callback);
});
SipPeer TN 方法
numbers.SipPeer.get(function(err,sipPeer){
// get TN for this peer
sipPeer.getTns(number, callback);
// get all TNs for this peer
sipPeer.getTns(callback);
// Update TNs for this peer
var tns = {fullNumber: "123456", rewriteUser: "test"};
sipPeer.updateTns(number, tns, callback);
// Move Tns to new peer
var numbersToMove = ["9195551212", "9195551213"];
sipPeer.moveTns(numbersToMove, callback);
});
SipPeer 链接应用方法
numbers.SipPeer.get(function(err,sipPeer){
// List application associated with this peer
sipPeer.listApplication(callback);
// Associate an application with this peer
var appId = "my-application-id";
sipPeer.editApplication({httpMessagingV2AppId: appId}, callback);
// Dissociate all applications with this peer
sipPeer.removeApplication(callback);
SipPeer 短消息设置
numbers.SipPeer.get(function(err,sipPeer){
// Get the sms settings associated with the peer
sipPeer.getSmsSettings(callback);
var desiredsettings = {
sipPeerSmsFeatureSettings: {
tollFree: true,
zone1: false,
zone2: true,
protocol: "HTTP"
}
};
//Change settings
sipPeer.editSmsSettings(desiredsettings, callback);
//Create settings
sipPeer.createSmsSettings(desiredsettings, callback);
//Delete
sipPeer.deleteSmsSettings(callback);
SipPeer 短消息设置
numbers.SipPeer.get(function(err,sipPeer){
// Get the mms settings associated with the peer
sipPeer.getMmsSettings(callback);
var desiredsettings = {
mmsSettings: {
protocol: 'HTTP'
},
protocols: {
HTTP: {
httpSettings: {
proxyPeerId: 500017
}
}
}
}
//Change settings
sipPeer.editMmsSettings(desiredsettings, callback);
//Create settings
sipPeer.createMmsSettings(desiredsettings, callback);
//Delete
sipPeer.deleteMmsSettings(callback);
站点
创建网站
一个网站是网络用户界面中所谓的子账户.
var site = {
name:"A new site",
description:"A new description",
address:{
houseNumber: "123",
streetName: "Anywhere St",
city: "Raleigh",
stateCode:"NC",
zip: "27609",
addressType: "Service"
}
};
numbers.Site.create(site, callback);
更新网站
site.name = "Some new name";
site.update(site, callback);
删除网站
site.delete(callback);
列出全部站点
numbers.Site.list(callback);
现场实例方法
numbers.Site.get(id, function(err,site){
// getInService numbers
site.getInserviceNumbers(query, callback);
// get Orders
site.getOrders(query, callback);
// get PortIns
site.getPortIns(query, callback);
// get Total Tns
site.getTotalTns(query, callback);
});
站点 sipPeer 方法
numbers.Site.get(id, function(err,site){
// get Sip Peers
site.getSipPeers(callback);
// get Sip Peer
site.getSipPeer(id, callback);
// create Sip Peer
var sipPeer = {name:"SIP Peer"};
site.createSipPeer(sipPeer, callback);
});
订阅
创建订阅
var subscription = {
orderType:"orders",
callbackSubscription: {
URL:"http://mycallbackurl.com",
user:"userid",
expiry: 12000
}
};
numbers.Subscription.create(subscription, callback);
获取订阅
numbers.Subscription.get(id, callback);
列表订阅
numbers.Subscription.list(query, callback);
订阅实例方法
numbers.Subscription.get(id, function(err, subscription){
// update subscription
var updatedData = {orderType:"portins"};
subscription.update(updatedData, callback)
// delete subscription
subscription.delete(callback);
});
技术网
获取 TN
numbers.Tn.get(fullNumber, callback);
列表 TN
numbers.Tn.list(query, callback);
TN 实例方法
numbers.Tn.get(fullNumber, function(err, tn){
// Get TN Details
tn.getTnDetails(callback);
// Get Sites
tn.getSites(callback);
// Get Sip Peers
tn.getSipPeers(callback);
// Get Rate Center
tn.getRateCenter(callback)
});
TN 保留
创建 TN 保留
numbers.TnReservation.create({"reservedTn":"9195551212"}, callback);
获取 TN 保留
numbers.TnReservation.get(id, callback);
删除 TN 保留
numbers.TnReservation.get(id, function(err, tn){
tn.delete(callback);
});
TN 选项
列出 TN 选项
const query = {
createdDateFrom : "2013-10-22T00:00:00.000Z",
orderDetails: true,
tn: 123456789
}
numbers.TnOption.list(client, query, (err, tnOptions) => {
if (err) {
console.error(err);
}
console.log(tnOptions);
})
找到特定的 TN 选项顺序
const tnOptionOrderId = 'fakeOrderId';
numbers.TnOption.get(tnOptionOrderId, (err, tnOption) => {
if (err) {
console.error(err);
}
console.log(tnOptions);
})
添加一个 PortOutPasscode
const tnOptionsOrder = {
customerOrderId: 'myOrderId',
tnOptionGroups: [
{
portOutPasscode: 'mypass1',
telephoneNumbers: ['1234567890']
}
]
}
numbers.TnOption.create(tnOptionsOrder, callback) //for callback example see TnOption.get
创建调用前号
const tnOptionsOrder = {
customerOrderId: 'myOrderId',
tnOptionGroups: [
{
callForward: '2345678901',
telephoneNumbers: ['1234567890']
}
]
}
numbers.TnOption.create(tnOptionsOrder, callback) //for callback example see TnOption.get
启用短消息
const tnOptionsOrder = {
customerOrderId: 'myOrderId',
tnOptionGroups: [
{
sms: 'on',
telephoneNumbers: ['1234567890']
}
]
}
numbers.TnOption.create(tnOptionsOrder, callback) //for callback example see TnOption.get
主机发送
检查可导入性
const numbers = ["1111", "2222"];
try {
const importResults = await ImportTnChecker.checkAsync(numbers);
console.log(importResults);
}
catch (e) {
console.log(e)
}
创建导入TN命令
const numbers = ["1111", "2222"];
const data = {
customerOrderId: "1111",
siteId: "222",
sipPeerId: "333",
loaAuthorizingPerson: "LoaAuthorizingPerson",
subscriber: {
name: "ABC Inc.",
serviceAddress: {
houseNumber: "11235",
streetName: "StreetName",
stateCode: "NC",
city: "City",
county: "county",
zip: "27606"
}
}
};
try {
const importTnOrder = await ImportTnOrder.createAsync(numbers);
console.log(importTnOrder);
}
catch (e) {
console.log(e)
}
创建已删除导入 调序
要将信件功能恢复到原所有者,请创建 removeImportedTnOrder 命令删除账户中的数字.
const numbers = ["1111", "2222"];
const customerOrderId = "customerOrderId"
try {
const importTnOrder = await RemoveImportedTnOrder.createAsync(customerOrderId, numbers);
console.log(importTnOrder);
}
catch (e) {
console.log(e)
}
CSR 查询
创建 CSR 顺序
const data = {
customerOrderId: "MyId5",
WorkingOrBillingTelephoneNumber:"9198675309",
accountNumber:"123463",
endUserPIN:"1231"
};
try {
const csrOrderResponse = await CsrOrder.createAsync(data);
console.log(csrOrderResponse.orderId);
//31e0b16b-4720-4f2e-bb99-1399eeb2ff9e
}
catch (e) {
console.log(e);
}
获取已存在的 CSR 顺序
如果CSR命令处于故障状态, SDK 会丢出错误
完成或处理
const csrOrderId = "1234-abc"
try {
const csrOrderData = await CsrOrder.getAsync(csrOrderId);
console.log(csrOrderData.status);
//COMPLETE
}
catch (e) {
console.log(e);
}
答错
const csrOrderId = "1234-abc"
try {
const csrOrderData = await CsrOrder.getAsync(csrOrderId);
console.log(csrOrderData.status);
//Won't fire, as request is failed
}
catch (e) {
console.log(e);
// [BandwidthError: CSR is not available for this TN] {
// code: 26500,
// message: 'CSR is not available for this TN',
// httpStatus: 200
// }
}
紧急通知
列表收件人
try {
const response = await EmergencyNotification.listRecipientsAsync(client, {"Size": "20"} );
console.log(response.emergencyNotificationRecipients.emergencyNotificationRecipient.length);
//4
}
catch (e) {
console.log(e);
}
获取收件人
try {
const response = await EmergencyNotification.getRecipientAsync(client, "enrid" );
console.log(response.emergencyNotificationRecipient.identifier);
//63865500-0904-46b1-9b4f-7bd237a26363
}
catch (e) {
console.log(e);
}
替换收件人
var en = new EmergencyNotification();
en.enrid = 123;
try {
const response = await en.replaceRecipientAsync(client, recipient);
console.log(response.emergencyNotificationRecipient.identifier);
//63865500-0904-46b1-9b4f-7bd237a26363
}
catch (e) {
console.log(e);
}
创建收件人
try {
const response = await EmergencyNotification.createRecipientAsync(client, recipient);
console.log(response.emergencyNotificationRecipient.identifier);
//63865500-0904-46b1-9b4f-7bd237a26363
}
catch (e) {
console.log(e);
}
删除收件人
var en = new EmergencyNotification();
en.enrid = 123;
try {
const response = await en.deleteRecipientAsync(client);
}
catch (e) {
console.log(e);
}
列表组顺序
try {
const response = await EmergencyNotification.listGroupOrdersAsync(helper.createClient(), {Size: "20"});
console.log(response.emergencyNotificationGroupOrders.emergencyNotificationGroupOrder.length);
//20
}
catch (e) {
console.log(e);
}
获取组顺序
try {
const response = await EmergencyNotification.getGroupOrderAsync(helper.createClient(), "orderId");
console.log(response.emergencyNotificationGroup.orderId);
//orderId
}
catch (e) {
console.log(e);
}
创建组顺序
try {
const response = EmergencyNotification.createGroupOrderAsync(helper.createClient(), groupOrder);
console.log(response.OrderId);
//900b3646-18df-4626-b237-3a8de648ebf6
}
catch (e) {
console.log(e);
}
列表组
try {
const response = await EmergencyNotification.listGroupsAsync(client, {"Size": "20"} );
console.log(response.emergencyNotificationGroups.emergencyNotificationGroup.length);
//20
}
catch (e) {
console.log(e);
}
获取组
try {
const response = await EmergencyNotification.getGroupAsync(client, "engid");
console.log(response.emergencyNotificationGroup.identifier);
//63865500-0904-46b1-9b4f-7bd237a26363
}
catch (e) {
console.log(e);
}
列出终点命令
try {
const response = await EmergencyNotification.listEnpointOrdersAsync(client, {"Size": "20"} );
console.log(response.emergencyNotificationEndpointOrders.emergencyNotificationEndpointOrder.length);
//20
}
catch (e) {
console.log(e);
}
获取端点顺序
try {
const response = await EmergencyNotification.getEndpointOrderAsync(client, "orderId" );
console.log(response.emergencyNotificationEndpointOrder.orderId);
//orderId
}
catch (e) {
console.log(e);
}
创建端点命令
try {
const response = await EmergencyNotification.createEndpointOrderAsync(client, endpoint );
console.log(response.emergencyNotificationEndpointOrder.orderId);
//3e9a852e-2d1d-4e2d-84c3-87223a78cb70
}
catch (e) {
console.log(e);
}
地理编码
提出地理代码请求
var data = data = {
addressLine1: "900 Main Campus Dr",
city: 'raleigh',
stateCode: 'nc',
zip: 27606
}
numbers.Geocode.request(data, function(error, address) {
if (error) {
return callback(error)
}
console.log(address.stateCode, address.houseNumber, address.streetName, address.streetSuffix, address.city)
//NC, 900, Main Campus, Dr, Raleigh
});
艾乌斯
列表 Aeuis 名称
try {
const response = await Aeuis.listAsync(client, {Size: 20} );
console.log(response.AlternateEndUserIdentifiers.AlternateEndUserIdentifier.length);
//20
}
catch (e) {
console.log(e);
}
去买艾乌斯的
try {
const response = await Aeuis.getAsync(client, "acid" );
console.log(response.AlternateEndUserIdentifier.Identifier);
//acid
}
catch (e) {
console.log(e);
}
设置 Sippeer 来源设置
var sipPeer = <create/get sip peer>;
var voiceHttpSettings = {
httpVoiceV2AppId: "abcd-1234"
}
await sipPeer.createOriginationSettingsAsync({voiceProtocol: "HTTP", httpSettings: voiceHttpSettings})
获取账户产品
console.log(await numbers.Account.getProductsAsync());