Наследование обработчика активности по умолчанию в виртуальном помощнике и шаблонах навыков

#c# #botframework #microsoft-teams

#c# #botframework #microsoft-teams

Вопрос:

Есть ли причина, по которой шаблон виртуального помощника создает бота, подобного:

 public class DefaultActivityHandler<T> : TeamsActivityHandler
    where T : Dialog
  

в то время как шаблон навыков создает бота, подобного:

 public class DefaultActivityHandler<T> : ActivityHandler
    where T : Dialog
  

Будет ли навык работать правильно при интеграции в Teams?

Ответ №1:

Да, это должно сработать. Навыки предназначены для абстракции и не зависят от контекста клиентского / родительского бота (в данном случае VA). Они не должны быть, но идея в том, что они обычно есть. Если навык не должен работать напрямую с командами, то его не нужно использовать TeamsActivityHandler . Это потому, что VA взаимодействует с навыком, а не с каналом / клиентом (командами).

Это, конечно, очень упрощенный сценарий. Существуют абсолютно разные сценарии, в которых вы хотели бы, чтобы навык использовался непосредственно с командами (в этом случае это был бы не навык, а просто бот), или где вы хотели бы, чтобы навык имел какой-то контекст для команд. Но по умолчанию это не настроено таким образом, и вам нужно настроить и спроектировать для этого.

Ответ №2:

ActivityHandler — это суперкласс, унаследованный в TeamsActivityHandler. Проверьте методы, реализованные в обоих классах. В зависимости от ваших требований вы можете наследовать от любого класса.

Комментарии:

1. Да, я видел наследование TeamsActivityHandler от ActivityHandler. Чего я не понимаю, так это почему в одном и том же шаблоне одна часть (VA) создана совместимой с teams, а другая (Навык) — нет. Итак, если я создам и освобожу VA и пустой навык, подключите их, следуя руководству, опубликуйте их для команд… они не работают?