无法在Twilio android客户端上接收来电

时间:2015-06-08 22:45:15

标签: android node.js twilio

我正在开发一个使用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());
});

3 个答案:

答案 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);

这对我很有用..希望也适合你!