我正在开发一个使用Twilio API进行调用的Android应用程序。我可以从twilio android客户端拨打电话,但我无法接听任何来电。因此,除了分配传入功能之外,还需要在服务器端编写哪些附加代码。我正在使用节点js作为服务器。
// android code
public void onInitialized() {
new Thread(new Runnable() {
@Override
public void run() {
try {
capabilityToken = HttpHelper
.httpGet("/my server url/token");
device = Twilio.createDevice(capabilityToken,null);
/* Code to handle incoming connections */
Intent intent = new Intent(context,HelloMonkeyActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
device.setIncomingIntent(pendingIntent);
} catch (Exception e) {
Log.e(TAG,
"Failed to obtain capability token: "
+ e.getLocalizedMessage());
}
}
}).start();
}
//establish a connection
public void handleIncomingConnections(Device inDevice,
Connection inConnection) {
if (connection != null)
connection.disconnect();
connection = inConnection;
connection.accept();
}
//服务器代码
var express=require('express');
var app=express();
var twilio=require('twilio');
var acctId='my account id';
var authToken='my token';
var applicationId='my apps id';
app.get('/token',function(req,res){
var capability=new twilio.Capability(acctId,authToken);
capability.allowClientIncoming('client');
capability.allowClientOutgoing(applicationId);
var token=capability.generate();
console.log("token:"+token);
res.send(token);
});
app.get('/call',function(req,res){
var caller_id="//Twilio number";
var twiml=new twilio.TwimlResponse();
var dialTo=req.query.DialTo;
twiml.dial(dialTo,{callerId:caller_id});
res.send(twiml.toString());
});
答案 0 :(得分:0)
答案 1 :(得分:0)
Twilio传道者在这里。
当您致电createDevice时,您似乎没有连接设备的听众。
-fsimd-cost-model
应该是:
device = Twilio.createDevice(capabilityToken,null);
device = Twilio.createDevice(capabilityToken,this);
实现DeviceListener接口的位置:
this
Twilio使用DeviceListner接口来启动通知您存在传入连接的活动。
我还建议检查您的Twilio呼叫日志,以确保Twilio无需转发所需的TwiML,以便将入站呼叫转发到此Twilio Client实例,并验证Twilio是否正在尝试拨打外拨电话正确的客户端实例。
请记住,为了将入站呼叫定向到运行Twilio Client的Android应用程序,您需要使用public class MonkeyPhone implements Twilio.InitListener, DeviceListener
动词和<Dial>
名词:
<Client>
希望有所帮助。
答案 2 :(得分:0)
实现这些类 Twilio.InitListener,DeviceListener,ConnectionListener
然后初始化设备类
device = Twilio.createDevice(token,Your_Class.this);
Intent intent = new Intent(context, YourClass.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
device.setIncomingIntent(pendingIntent);
这对我很有用..希望也适合你!