2016-11-12 4 views
1

Я получаю следующее сообщение об ошибке при попытке зарегистрировать пользователя для клиента Twilio Voice:Ошибка в Push-уведомления при регистрации для IOS Twilio Voice Client

[ERROR VoiceClient] Inside register:deviceToken:completion:, failed to register for Twilio push notifications. Error:Failed to register. Code: 6.

Вот установка:

  • Учетные записи Push зарегистрированы в Twilio. Был зарегистрирован сертификат VoIP Push, и этот тип нажатий находится только в режиме производства. Предположим, что идентификатор приложения - «com.bundle.appIDX».
  • Серверная сторона настроена так, что правильные значения push-данных подаются на объект IpMessagingGrant.
  • На стороне клиента, следующий фрагмент кода выполняется: VoiceClient.sharedInstance().register(withAccessToken: self.accessToken, deviceToken: self.voipToken)
  • Это немедленно завершается с ошибкой выше.
  • Использование версии '= 2.0.0-beta4' для TwilioVoiceClient и использование версии «2.9.1» для компонента на стороне сервера с двумя уровнями (https://github.com/twilio/twilio-node/tree/2.9.1).
  • Пробовал играть с опцией «Использовать эти учетные данные для отправки в песочницу APN» и результата нет.
  • Пробовал использовать профили разработки и подготовки на стороне клиента для идентификатора приложения «com.bundle.appIDX».

Действительно ли Twilio поддерживает VoIP-толкает? Если да, что может быть неправильным в этой настройке?

Thanks, Guven.

======= Edit после указания Виктора: теперь я вручную создать VoiceGrant. Я установил значение свойства ключа 'voice'. Вот как выглядит грант:

{ 
    outgoing_application_sid: 'APXX', 
    push_credential_sid: 'CRXX', 
    endpoint_id: 'XX' 
} 

По-прежнему возникает ошибка регистрации.

Я также попробовал этот формат, так это то, как он выглядит в 2.11.0 версии:

{ outgoing: { application_sid: 'APXX' }, 
    push_credential_sid: 'CRXX', 
    endpoint_id: 'XX' 
} 

Любые идеи, где эта проблема может быть? Установка кода облака, а также:

var accessToken = new twilio.AccessToken("ACXX", "SKXX", "PPXX", accessTokenOptions); 

    var voiceGrantConfig = {"outgoingApplicationSid": "APXX", 
           "endpointId": clientName, 
           "pushCredentialSid": "CRXX"}; 

    var voiceGrant = new VoiceGrant(voiceGrantConfig); 
    voiceGrant.key = "voice"; 
    console.log(voiceGrant.toPayload()); 
    accessToken.addGrant(voiceGrant); 

    var token = accessToken.toJwt(); 

Edit 2: Я на самом деле повышен до Twilio-узел 2.11.0 и по-прежнему получаю сообщение об ошибке. Вот маркер доступа прямо перед генерированием jwt.

AccessToken { 
    accountSid: 'ACXX', 
    keySid: 'SKXX', 
    secret: 'PPXX', 
    ttl: 86400, 
    identity: undefined, 
    nbf: undefined, 
    grants: 
    [ VoiceGrant { 
     outgoingApplicationSid: 'APXX', 
     outgoingApplicationParams: undefined, 
     pushCredentialSid: 'CRXX', 
     endpointId: 'XX' } ] } 
+1

Привет, Гувен, вы можете подтвердить, что используете токены доступа: https://www.twilio.com/docs/api/rest/access-tokens, а не токены возможностей: https://www.twilio.com/ документы/API/клиент/возможность-маркеры? –

+0

@MeganSpeir Эй, Меган, да, я могу это подтвердить. Я добавляю IpMessagingGrant к токену доступа. Это может быть проблемой. 2.9.1 twilio-node не имеет VoiceGrant, он вводится только в версии 2.11.0. – Guven

ответ

3

[Изменено на основе обратной связи от Guven]

Вам нужен "голоса" грант. В противном случае ваши запросы будут отклонены для продукта Voice. Вам нужно либо вручную добавить этот раздел в JSON перед его подписанием, либо вам нужно перейти на версию 2.11.0.В частности, ваш токен должен выглядеть следующим образом:

{ 
    "sub": "ACxxxx", 
    "iss": "SKxxxx", 
    "grants": { 
    "voice": { 
     "outgoing": { 
     "application_sid": "APxxxx" 
     }, 
     "push_credential_sid": "CRxxxxx" 
    }, 
    "identity": "voice_test" 
    }, 
    "jti": "SKxxxxx", 
    "exp": 1479315711 
} 

Обратите внимание, что также элемент «identity». Это идентификатор вашего пользователя. Обычно это имя пользователя или идентификатор записи пользователя в вашей системе.

Оформить заказ quickstart app для образца кода для создания правильного токена (он находится на Python, но должен дать вам представление о том, как начать работу).

+0

Это именно то, что я искал, спасибо Виктору. Я очень разочарован поддержкой Twilio, это было 2 дня и ответа пока нет. Я не думаю, что это был сложный случай. Документация может быть действительно улучшена. – Guven

+0

Эй, Виктор, похоже, проблема, я обновил свой вопрос. Не могли бы вы взглянуть? – Guven