Кажется, вы относитесь к этому как к вопросу бота, хотя на самом деле это скорее вопрос клиента. Ваш бот может реагировать только на действия, которые он получает, поэтому ваш бот не сможет обрабатывать действия как со звуком, так и с текстом, если клиент никогда не отправляет действия с аудио и текстом. Поскольку вы используете свой собственный клиент Direct Line, вы можете разрешить своему клиенту отправлять такие действия. Поскольку аудиофайлы обычно очень большие, я рекомендую загрузить файл вместо того, чтобы помещать URL-адрес данных во вложение.
Обычно пользователь отправляет вложение и текст как отдельные действия на разных этапах. Бот будет обрабатывать данные на этих отдельных поворотах, отслеживая диалог в своем состоянии, и это, вероятно, будет диалог водопада. Похоже, вы не хотите этого делать, потому что текст и вложение - это действительно одни и те же данные в вашем случае.
На стороне бота вы можете получить доступ к тексту и вложениям активности вне любого диалог, если хотите. У вас также есть прямой доступ к действию внутри шага водопада после любого запроса, потому что контекст шага содержит контекст поворота, который содержит действие.
text = step_context.context.activity.text
attachments = step_context.context.activity.attachments
Вы можете сделать это с помощью текстовой подсказки или подсказки вложения . Если вы хотите иметь доступ к этим вещам в step_context.result
, вы можете создать свое собственное приглашение, которое помещает в результат все действие. Вы можете использовать ActivityPrompt
в качестве базового класса, поскольку он был создан для этой цели.
Помимо отправки отдельных действий, другой альтернативой отправке текста и звука в одном действии может быть чтобы отправить только звук и заставить бота преобразовать звук в текст, используя Cognitive Speech Services . Это, вероятно, не будет идеальным вариантом, потому что тогда ваш клиент не сможет отображать текст, поскольку он не выполняет преобразование на своей стороне. Я предполагаю, что у вас есть возможность предоставить пользователю ввод звука с микрофона, а затем преобразовать его в текст, а не вводить текст, а затем преобразовывать его в звук.
Прямая речь - это встроенный способ использования Cognitive Speech Services, чтобы и ваш клиент, и бот могли получить доступ к тексту. И, в зависимости от ваших потребностей, вы можете рассмотреть возможность просмотра речи в веб-чате .