#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.