#botframework
#botframework
Вопрос:
Я использую MS Bot Composer в сочетании с адаптером BotBuilder Facebook, чтобы опубликовать моего бота в соответствии с «новыми» правилами Facebook Workplace — важно помнить, что я уже пытался использовать это непосредственно в Facebook Messenge, применяется та же ситуация.
Интеграция и подключение работают нормально, теперь проблема заключается в том, чтобы понять, как публиковать что-либо, кроме текста.
Ниже приведен пример попытки получить правильный шаблон
# channelData
-```{
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"What do you want to do next?",
"buttons":[
{
"type":"web_url",
"url":"https://www.messenger.com",
"title":"Visit Messenger"
}
]
}
}
}```
И затем ответ бота:
Комментарии:
1. Связывание
2. Здесь много движущихся частей, поэтому вам нужно будет помочь нам воспроизвести это поведение. Когда вы упоминаете новые правила Facebook Workplace, имеете ли вы в виду, что ранее вы использовали соединитель Facebook, а теперь должны переключиться на адаптер Facebook? Интегрировали ли вы адаптер Facebook, используя извлеченную среду выполнения? Можете ли вы сослаться на документацию, которой вы следовали, о том, как заставить адаптер Facebook работать с Composer? Можете ли вы сослаться на документацию, касающуюся формата LG, который вы использовали для данных канала?
3. 1-й вопрос: Да. Workplace не допускает интеграции с использованием facebook.botframework.com и рекомендую использовать адаптер. 2-й: Да. Среда выполнения dotnet. 3-й: Официальных документов нет. Просто руководство разработчика-композитора к подобной ошибке. Ссылка . 4-й: Опять же, просто руководство. Ссылка . Это последний JSON, который я отправляю на Facebook: link .
4. Просто чтобы сообщить, что если я использую те же данные канала без адаптера, все работает нормально. Возможно, мне не хватает некоторых библиотек для адаптера… Если вам нужны дополнительные тесты, дайте мне знать.
Ответ №1:
Если вы идете по маршруту передачи данных канала, адаптер Facebook ожидает, что вы предоставите полный FacebookMessage
объект в качестве данных канала. Это на один уровень выше предоставленного вами JSON, поэтому это будет выглядеть так:
{
"message":{
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"What do you want to do next?",
"buttons":[
{
"type":"web_url",
"url":"https://www.messenger.com",
"title":"Visit Messenger"
}
]
}
}
}
}
Однако это не сработает, потому что в нем отсутствуют другие FacebookMessage
необходимые свойства, например sender
. Вместо того чтобы пытаться заполнить все сообщение Facebook, может быть проще просто перейти по маршруту вложения, а не по маршруту передачи данных канала. Вы можете увидеть, как это сделать в примере адаптера Facebook:
private static Attachment CreateTemplateAttachment(string filePath)
{
var templateAttachmentJson = File.ReadAllText(filePath);
var templateAttachment = new Attachment()
{
ContentType = "template",
Content = JsonConvert.DeserializeObject(templateAttachmentJson),
};
return templateAttachment;
}
В Composer вы можете установить вложения действия вместо данных его канала. Просто установите тип содержимого на «шаблон», а содержимое — на полезную нагрузку вложения, которое у вас есть сейчас, используя ресурсы примера адаптера Facebook в качестве руководства:
# attachment
- ```
{
"contentType": "template",
"content": {
"template_type": "button",
"text": "What do you want to do next?",
"buttons": [
{
"type": "web_url",
"url": "https://www.messenger.com",
"title": "Visit Messenger"
}
]
}
}
```
Вы можете увидеть, как адаптер Facebook обрабатывает как данные канала, так и вложения, взглянув на FacebookHelper
класс.
Комментарии:
1. Просто ответил на твой ответ, Кайл.
2. Извините, я не понимаю, что вы имеете в виду. Является ли мой ответ приемлемым?
3. К сожалению, нет… Мой ответ был удален здесь, у вас есть какой-нибудь контакт, чтобы связаться с вами?
4. Для меня лучше отвечать на ваши вопросы публично, чтобы мои ответы могли помочь большему количеству людей. Можете ли вы объяснить, почему мой ответ неприемлем?
5.Я использую функции Azure… Теперь в Composer у меня есть это, это JSON, который я отправляю на Workplace. В
Startup.cs
я вставил строку с AddTransient link, затем я создалBot.cs
файл, а затем это ответ от Workplace: link