Client.getConversationByUniqueName и Client.getConversationBySid не могут найти разговоры, созданные другими пользователями

Примечание. Я использую @ twilio / беседы версии 1.1.0 в проекте узла. Я перехожу с программируемого чата на разговоры.

Я вижу звонки на Client.getConversationByUniqueName и Client.getConversationBySid не возвращают существующие каналы, созданные другими пользователями.

Пример:

Пользователь A (со своим уникальным идентификатором и токеном) успешно создал диалог myConvo1, используя следующий код:

      client.createConversation({
   uniqueName: 'myConvo1',
   friendlyName: 'myConvo1',
 });

Пользователь B (со своим уникальным идентификатором и токеном) не может найти этот диалог, используя: Client.getConversationByUniqueName('myConvo1') ИЛИ ЖЕ Client.getConversationBySid(sid)(просто передавая sid, который я получаю из первоначального вызова createConversation). Я вижу эти ошибки соответственно:

      Not Found    at ​​​Upstream.actualSend​​​
      ​./node_modules/@twilio/conversations/node_modules/twilsock/lib/services/upstream.js:135

Conversation with SID CHc4565e40a32f4bffaf490bae2cff45db is not found. 
      at ​​​conversations.syncListRead.promise.then.then.conversation​​​ ​./node_modules/@twilio/conversations/lib/client.js:283

Однако я могу получить доступ к этому разговору с помощью тех же функций, если я использую токен / идентификатор пользователя A. Кроме того, когда я вызываю это из клиента пользователя B:

      client.createConversation({
       uniqueName: 'myConvo1',
       friendlyName: 'myConvo1',
     });

Я получаю такую ​​ошибку: Conversation with provided unique name already exists. Все это наводит меня на мысль, что разговор существует, но он просто недоступен для других пользователей.

Примечание 2: я ссылался на документы ниже. Я не вижу явных примеров того, как находить каналы и присоединяться к ним, поэтому я могу что-то упустить или подойти к этому неправильно.

https://media.twiliocdn.com/sdk/js/conversations/releases/1.1.0/docs/Client.html

https://www.twilio.com/docs/conversations

3 ответа

Может ли это быть причиной того, что Twilio Conversations поддерживает только частные каналы, а не общедоступные каналы, такие как Программируемый чат?

Примеры использования публичных и частных каналов с программируемым чатом Twilio

Переход к беседам из программируемого чата

Я создал несколько идентификаторов службы и использовал один конкретный идентификатор службы чата (XXXX-Chat-Dev), но приложение приняло идентификатор службы чата по умолчанию, который я не упомянул в бэкэнде.

Исправлено удалением идентификатора службы чата по умолчанию в Twilio.

Ваше здоровье!

Как упоминал @mwest-cs, проблема заключалась в том, что участников нужно было добавлять после создания разговора. Я создал беседы на серверной стороне, так что они были созданыsystem, а не одним из участников. Ничего страшного, просто нужно добавить всех участников в беседу. В конце концов это код, который у меня заработал:

      const Twilio = require('twilio');

const conversationUserIds = [123, 456]; // TODO: replace with real ones; those are my custom user IDs, not Twilio User SIDs.

const twilioClient = Twilio(twilioConfig.ACCOUNT_SID, twilioConfig.AUTH_TOKEN);
const newConversation = await twilioClient.conversations.conversations.create({ uniqueName });
await Promise.all(conversationUserIds.map((userId) =>
    channel.participants().create({ identity: userId })
));

Обратите внимание, что согласно документации Twilio , создание участника присоединяется к разговору, и подключенный человек будет получать все последующие сообщения.

Кроме того, вы можете проверить количество участников вашего разговора, перейдя в Expore Products в Twilio Console -> Разговоры, на левой боковой панели: Разговоры -> Управление -> Службы, выберите сервис, затем на левой боковой панели: Разговор (в нижний). Здесь вы можете увидеть таблицу всех ваших разговоров, а также в столбце таблицы «Участники» указано количество участников в каждом разговоре.

Приятного кодирования!

Другие вопросы по тегам