Добрый день, форумчане!
Пытаюсь создать свой провайдер для работы с чатом. Вот по этой статье.
Получить сообщения проблем не вызывает. Но при отправке, ошибка.
Полез в дебаг, и обнаружил что при отправке сообщения. Source устанавливает в признак 2 - сторонний разработчики. Имя канала пусто. Хотя сам id моего канала есть.
{
Facebook = 0,
Telegram = 1,
ThirdParty = 2,
WhatsApp = 3
}
Происходит попытка собрать worker для ThirdParty. Но так как его нет, а есть мой канал Test. Отправка падает.
Если при получении сообщения я задаю канал прям в ChannelName. От при отправке из фронта в обратную сторону. такого параметра я не вижу. Теоретически имя канало должно вытягиваться из провайдера канал или самого имени канала. Но такого кода в методе public OmnichannelMessagingServiceResponse SendMessage(MessagingMessage message)
Уже перелопатил весь код. Не могу найти ответ. Либо это не доработка террасофта, либо я чего то не понимаю.
При получении сообщения мы задаем канал вот тут
ChannelId = message.ChannelId, MessageDirection = MessageDirection.Incoming, MessageType = messageType, // Указывает на источник канала (сторонние разработчики). Source = ChannelType.ThirdParty, // Имя провайдера. В дальнейшем будет использоваться как идентификатор провайдера. ChannelName = "Test"
сам тип ChannelType зашит в библиотеке, я конечно могу ее открыть и добавить свой тип, и ее использовать, но это не похоже на нормальную работы с решением террасофта.
Будьте добры. помогите с вопросом. Код прошерстил. Связь в коде нашел только с Source. ChannelName при вызове SendMessage приходит пустой.
При дебаге я подменил значение ChannelName на Test. все заработало. Но кода для заполнения канала нет. В том числе и со стороны фронта. Где бы это могло храниться, не нашел так же. Нашел все связи OmniChat и прочее.
В общем я в тупике. помогите если кто то в теме!
Нравится
Здравствуйте, мы расширили список провайдеров и теперь не обязательно использовать ThirdParty = 2,
сейчас список следующий:
Facebook, Telegram, ThirdParty, WhatsApp, Skype, Viber, Instagram, WeChat, Line, Blackberry, Hangouts, Slack, Snapchat, Signal, Kakaotalk, Discord, Imo, Kik, Qq, iMessage, WebSite, VK, OK, Twitter, Workplace, Teams
Подскажите, пожалуйста, необходимый для настройки провайдер.
Test - название канала, а провайдер ThirdParty. Исходя из этого необходимо добавить реализацию для отправки сообщений на провайдер ThirdParty. Пример есть в схеме OmnichannelMessagingAppEventListener (метод BindOutcomeMessageWorker).
В методе описана зависимость использования воркера исходя из провайдера, такую же логику необходимо добавить для воркера ThirdParty.
Алёна Доля,
Добрый день!
Я правильно понимаю, что вот эта часть инструкции не валидна? Т.е. какой бы мы провайдер не зарегистрировали, все равно при отправке сообщения будет использоваться ThirdParty?
Негрий Максим Михайлович,
У MessageManager, есть по две реализации каждого метода. Например:
/// <summary>
/// Save message
/// </summary>
/// <param name="message">Message from messenger.</param>
public void Receive(UnifiedMessage message) {
MessageIncomeWorker.Receive(message);
}
/// <summary>
/// Save message
/// </summary>
/// <param name="message">Message from messenger.</param>
/// <param name="messenger">messenger name.</param>
public void Receive(UnifiedMessage message, string messenger) {
MessageIncomeWorker.Receive(message, messenger);
}
В своем сервисе необходимо использовать метод принимающий вторым параметром строку с именем мессенджера(в случае академии Test). Если же использовать метод без второго параметра, то будет описанная проблема и в этом случае нужно использовать Source имя мессенджера из добавленных.