Сумасшедшая демонстрация: несколько агентов Microsoft
-
09-10-2019 - |
Вопрос
Я создаю крайнюю и довольно глупую демонстрацию для презентации, которую я даю. Я надеялся использовать какой -то тип API для отображения нескольких актеров, и планировал использовать агент Microsoft. Возможно ли с агентом Microsoft отображать 2 или более агентов одновременно? Использование нескольких потоков или процессов не является проблемой, и это ни в коем случае не должно быть красивым.
Чтобы сделать работу с Com Easy, я использую PowerShell V2, и мой текущий код выглядит примерно так:
$agent = new-object -com agent.control.2
$agent2 = new-object -com agent.control.2
$agent.connected = 1
$agent2.connected = 1
[void] $agent.characters.load("Merlin")
[void] $agent2.characters.load("Robby")
$merlin = $agent.characters.character("Merlin")
$robby = $agent2.characters.character("Robby")
# Insert silly demo with our actors Merlin and Robby here!
РЕДАКТИРОВАТЬ: Я ни в коем случае не продан на агенте Microsoft. Если у вас есть лучший способ сделать то же самое или похожую вещь, я бы хотел услышать об этом.
Решение
В конце концов я использовал единого агента для своей демонстрации, и он все еще достал. Финальной демонстрацией была агент Microsoft, а API .NET речи читал часть Ромео и Джульетты. Я считаю, что можно получить более одного, если вы используете изоляцию процесса, но вам нужно будет выполнить синхронизацию процесса.
Другие советы
Да, вы можете загрузить и отображать несколько символов с одним экземпляром управления MSAgent. У вас уже есть код, необходимый для этого, просто избавьтесь от $agent2
и замените его на $agent
.
$agent = new-object -com agent.control.2
$agent.connected = 1
[void] $agent.characters.load("Merlin")
[void] $agent.characters.load("Robby")
$merlin = $agent.characters.character("Merlin")
$robby = $agent.characters.character("Robby")
Вы можете иметь несколько символов взаимодействовать друг с другом. Microsoft предоставляет кодовые демонстрации, чтобы показать это в действии.
Например:
$merlin = $agent.characters.character("Merlin")
$robby = $agent.characters.character("Robby")
[void] $merlin.Show()
$req = $merlin.Speak("Robby, where are you?")
[void] $robby.Wait($req)
$req = $robby.Show()
[void] $merlin.Wait($req)
$req = $merlin.Speak("Oh, there you are! How are you today?")
[void] $robby.Wait($req)
[void] $robby.Speak("I am good. Thank you for asking")