Twilio JS — Client.getChannelBySid выдает ошибку: не найдено

#javascript #twilio #twilio-programmable-chat

#javascript #twilio #twilio-программируемый-чат

Вопрос:

Я создал клиент чата с помощью Twilio, используя их клиент JavaScript во внешнем интерфейсе. Я делаю следующий вызов, чтобы получить канал по SID

 let channel_promise = client.getChannelBySid(sid);
  

Это работало нормально в течение нескольких месяцев, но теперь ни с того ни с сего я получаю следующую ошибку:

 twilio-chat.js:28610 Uncaught (in promise) Error: Not Found
    at TwilsockUpstreamError.ExtendableBuiltin (twilio-chat.js:28610)
    at TwilsockUpstreamError.TwilsockError (twilio-chat.js:28640)
    at new TwilsockUpstreamError (twilio-chat.js:28719)
    at Upstream._callee$ (twilio-chat.js:30068)
    at tryCatch (twilio-chat.js:14232)
    at Generator.invoke [as _invoke] (twilio-chat.js:14466)
    at Generator.prototype.<computed> [as next] (twilio-chat.js:14284)
    at step (twilio-chat.js:8227)
    at twilio-chat.js:8238
ExtendableBuiltin   @   twilio-chat.js:28610
TwilsockError   @   twilio-chat.js:28640
TwilsockUpstreamError   @   twilio-chat.js:28719
_callee$    @   twilio-chat.js:30068
tryCatch    @   twilio-chat.js:14232
invoke  @   twilio-chat.js:14466
prototype.<computed>    @   twilio-chat.js:14284
step    @   twilio-chat.js:8227
(anonymous) @   twilio-chat.js:8238
Promise.then (async)        
success @   conversations.js:653
j   @   jquery-1.11.0.min.js:2
fireWith    @   jquery-1.11.0.min.js:2
x   @   jquery-1.11.0.min.js:4
b   @   jquery-1.11.0.min.js:4
XMLHttpRequest.send (async)     
(anonymous) @   VM11:1
send    @   jquery-1.11.0.min.js:4
ajax    @   jquery-1.11.0.min.js:4
join_conversation   @   conversations.js:617
dispatch    @   jquery-1.11.0.min.js:3
r.handle    @   jquery-1.11.0.min.js:3
  

Я извлекаю клиентскую библиотеку из их CDN и указываю версию, поэтому я вполне уверен, что это не происходит из-за изменения в клиентском коде.

 <script src="https://media.twiliocdn.com/sdk/js/chat/v3.3/twilio-chat.js"></script>
  

Я подтвердил, что используемый мной SID канала правильный, зарегистрировав его в консоли, а затем используя twilio-cli для поиска существующих каналов. Вывод из командной строки совпадает с выводом консоли, поэтому я знаю, что использую правильный SID.

У кого-нибудь есть идеи, почему этот вызов не выполняется? Как я могу получить канал без ошибки?


Код вокруг getChannelBySid вызова является:

 function join_conversation(){

    // Get the SID        
    const sid = $(this).attr('data-sid');

    // Log the SID for debugging purposes.
    console.log(sid);

    // Get the channel.
    let channel_promise = client.getChannelBySid(sid);

    channel_promise.then(async function(channel){
        ...
    })

}
  

SID поступает из серверной части, которая использует следующий код для извлечения разговоров:

 from twilio.rest import Client

...

self.client = Client(self.account_sid, self.auth_token)

...

def get_conversations(self):
    return self.client.conversations.conversations.list()
  

Токен чата генерируется с помощью следующего кода:

 from twilio.jwt.access_token import AccessToken
from twilio.jwt.access_token.grants import ChatGrant

...

def generate_chat_token(self, identity, service_sid):

    # Get a token.
    token = AccessToken(self.account_sid, self.api_key, self.api_secret, identity=identity)

    # Add a chat grant to the token.
    grant = ChatGrant(service_sid=service_sid)
    token.add_grant(grant)

    return token.to_jwt()
  

Комментарии:

1. ты подстриг sid ? вероятно, в нем есть пробелы.

2. @raven Я только что подтвердил — это не удается даже после удаления любых пробелов из идентификатора SID.

3. Эй, @That1Guy, я не уверен, что трассировка стека полностью правильная, поскольку я не смог найти никаких подобных ошибок, выданных из библиотеки. Сможете ли вы предоставить демо-приложение с воспроизведенной проблемой?

4. Еще одна вещь, которую я бы предложил, — это использовать неминифицированную библиотеку js и обеспечить полную трассировку стека.

5. @DipenShah Моя просьба сделать приложение общедоступным была отклонена, но я могу использовать неминифицированную библиотеку и обновить stracktrace.