2014-11-24 12 views
0

在我的前端Javascript代碼中,我打電話Twilio.Device.connect(),它沒有向我的語音請求URL發起請求。我不確定這裏發生了什麼事。我確保我能夠事先設定我的能力標記,並且沒有錯誤,但仍然無效。這裏是前端JS代碼。Twilio:Twilio.Device.connect()沒有打到語音請求的URL

  Twilio.Device.setup(resp.token); 
      Twilio.Device.connect({autoDial: true}); 

      // respond to "connect" event 

      Twilio.Device.connect(function (conn) { 
       alert("Got here!"); 
      } 

此處還有我的代碼來生成令牌。

public static void getToken() 
{ 
    TwilioCapability t = new TwilioCapability(ACCOUNT_SID, AUTH_TOKEN); 

    t.allowClientOutgoing(APP_SID); 
    t.allowClientIncoming("test"); 

    try { 
     throw new OKResponse(ImmutableMap.of("token", t.generateToken(3600))); 
    } catch (DomainException e) { 
     Logger.error(e, "Error generating twilio token: %s", e.getMessage()); 
    } 
} 

回答

1

我有同樣的問題,

您需要調用的函數調用generateToken() allowClientOutgoing()和allowClientIncoming(),使()由Services_Twilio_Capability創建的對象具有應用程序鏈接後。

這工作:

$objToken = new Services_Twilio_Capability($accountSid, $authToken); 
$objToken->allowClientOutgoing('APXXXXXXXXXX'); 
$objToken->allowClientIncoming($_REQUEST['name']); 
$strToken = $objToken->generateToken(); 

這不:

$objToken = new Services_Twilio_Capability($accountSid, $authToken); 
$strToken = $objToken->generateToken(); 
$objToken->allowClientOutgoing('APXXXXXXXXXX'); 
$objToken->allowClientIncoming($_REQUEST['name']); 

而且,它不會引發錯誤,但你的JS始終顯示爲 「斷開連接」

UPDATE

這是我的後端編輯:

/** 
    * Create an instance of Services_Twilio_Capability(); 
    * 
    * @return object 
    */ 
    private function instantiateCapability(){ 
     if(is_null($this->objCapability)) 
      $this->objCapability = new \Services_Twilio_Capability(TWILIO_ID, TWILIO_KEY); 
     return $this->objCapability; 
    } 

    /** 
    * Generate a token 
    * 
    * @link http://twilio-php.readthedocs.org/en/latest/usage/token-generation.html 
    * @param bool $boolOutgoing Allow outgoing connections 
    * @param bool $boolIncoming Allow incoming connections 
    * @return string 
    */ 
    public function generateToken($boolOutgoing = true, $boolIncoming = true){ 
     $objCapability = $this->instantiateCapability(); 

     if($boolOutgoing) $objCapability->allowClientOutgoing(TWILIO_SID]); 
     if($boolIncoming) $objCapability >allowClientIncoming($_SESSION[$GLOBALS['APP_NAME'] . 'ID']); 

     $strToken = $objCapability->generateToken(TOKEN_DURATION); 
     return json_encode(array('status' => 1, 'token' => $strToken)); 
    } 

這裏是前端(Ajax響應回調):

function(result){ 
    if(result.status == 1) { 
     //Load the twilio object 
     Twilio.Device.setup(result.token); 
    } 
} 
+0

我已經做到這一點。我應該也在我的代碼中生成令牌 – user2158382 2014-11-24 22:03:28

+0

您的函數getToken()返回一個void值,我認爲它應該返回一個字符串(令牌)。我的後端是在PHP中,但我認爲在這兩種情況下,我們必須返回一個值,將通過AJAX傳遞給客戶端。 – Dokinoki 2014-11-25 01:08:50

+0

我的方法確實返回一個字符串,當我查看函數響應時可以驗證它。在該方法的成功json之後,字符串標記在'resp.token'中返回。 – user2158382 2014-11-25 01:26:43