Botframework-solutions: VA с подключенным навыком некорректно работает в WebChat

Созданный на 12 июн. 2019  ·  20Комментарии  ·  Источник: microsoft/botframework-solutions

Моя установка - это шаблон виртуального помощника, связанный с шаблоном навыков. Все в порядке, если я пытаюсь запустить виртуальное устройство внутри эмулятора бота и правильно работает на локальном хосте и с конечной точкой Azure, но когда я пытаюсь запустить диалоговое окно навыков в моем виртуальном устройстве внутри Azure WebChat, у меня нет ответа, мое виртуальное устройство просто останавливается. ответь на мои вопросы.

emulator2
emulator1

Самый полезный комментарий

Спасибо - мне удалось сделать реплику в чате. Странно - расследование.

Все 20 Комментарий

У меня точно такая же проблема, у меня есть основной бот и навык, опубликованный в лазурном цвете, когда я тестирую бота внутри эмулятора, он работает отлично, разговор передается боту навыков. Однако, как только он используется либо в веб-чате, либо, в моем случае, в приложении React, использующем прямую линию, бот просто перестает отвечать. Единственное различие между двумя конфигурациями для меня заключается в том, что мы используем AppId и AppPassword в эмуляторе, возможно, существует проблема аутентификации, которая не позволяет двум ботам разговаривать друг с другом при развертывании в Azure?

Единственная информация в appinsights - это исключение: POST к конечной точке бота завершился неудачно с HTTP-статусом 500, не более подробной информации.

Спасибо за это - можете ли вы подтвердить, что можете перейти к конечной точке манифеста вашего развернутого навыка? например http://YOURSKILLNAME.azurewebsites.net/api/skill/manifest. Это докажет, что навык работает правильно.

Спасибо за это - можете ли вы подтвердить, что можете перейти к конечной точке манифеста вашего развернутого навыка? например http://YOURSKILLNAME.azurewebsites.net/api/skill/manifest. Это докажет, что навык работает правильно.

Да, мой манифест в сети и вроде нормально. Кроме того, если я использую веб-чат в группе ресурсов моего навыка, он работает (конечно, только с диалогами навыков и без VA). Вот мой манифест: https://hsilva-my1stskill.azurewebsites.net/api/skill/manifest.

Все работает внутри эмулятора бота, используя мою виртуальную машину и конечную точку Azure Skill, проблема только внутри VA WebChat при попытке перенаправления для навыка.

Просто двойная проверка приложения-сервиса на предмет Навыка была создана с помощью скрипта развертывания? В любом случае вы можете проверить, включены ли веб-сокеты в службе приложений для навыков? Это устанавливается как часть развертывания навыков.

image

Просто двойная проверка приложения-сервиса на предмет Навыка была создана с помощью скрипта развертывания? В любом случае вы можете проверить, включены ли веб-сокеты в службе приложений для навыков? Это устанавливается как часть развертывания навыков.

Да, у меня включен веб-сокет в обоих приложениях, в моем виртуальном помощнике и в моем приложении Skill.
И я выполняю весь процесс, следуя документации, со сценариями развертывания.

Спасибо - и последнее, что поможет нам воспроизвести: не могли бы вы поделиться html / js-кодом веб-чата, который вы используете для "размещения" бота VA - конечно, без ваших секретов! Пожалуйста, не используйте элемент управления веб-чатом на странице Azure - вместо этого подключите канал веб-чата и проверьте этот подход.

Если это вам поможет, в моем случае я также активировал веб-сокеты и манифест доступен, я использовал следующий код реакции:

import React, {Component} from 'react';
import {connect} from 'react-redux';
import { DirectLine } from 'botframework-directlinejs';
import ReactWebChat from 'botframework-webchat';


class HomePage extends Component {
  constructor(props) {
    super(props);

    this.directLine = new DirectLine({ token: '' });
  }
  render() {
    return (
      <div style={{height:'500px'}}>
        <ReactWebChat directLine={ this.directLine } 
                      styleOptions={{}} 
                      locale='fr-FR' 
                      />
      </div>
    );
  }
}

const mapStateToProps = state => ({
  userInfo: state.auth.userInfo,
});

export default connect(mapStateToProps)(HomePage);


Мой манифест: https://dave-skill-jooxter.azurewebsites.net/api/skill/manifest , я не использую соединения oauth.

Спасибо - и последнее, что поможет нам воспроизвести: не могли бы вы поделиться html / js-кодом веб-чата, который вы используете для "размещения" бота VA - конечно, без ваших секретов! Пожалуйста, не используйте элемент управления веб-чатом на странице Azure - вместо этого подключите канал веб-чата и проверьте этот подход.

Извините, но у меня нет html / js, которым можно поделиться, потому что я просто пытаюсь использовать веб-чат Azure внутри портала. Итак, нельзя ли работать в этом чате? Я просто хочу знать, сделал ли я что-то не так или это нормально.

Со своей стороны, я немного больше протестировал своего бота, и кажется, что сообщение от основного бота передается боту-навыку, однако по какой-то причине основной бот не получает ответа от бота-навыка, и это ответ не отправляется клиенту чата.

Спасибо - мне удалось сделать реплику в чате. Странно - расследование.

Спасибо всем, вчера я посмотрел, и @ lzc850612 смог определить проблему, как ни странно, только при появлении в веб-чате, где ответы на действия от навыков не «переписывались» правильно перед отправкой обратно в WebChat, который затем отклонялся.

Я только что подтвердил, что # 1540 устраняет проблему с моим ботом. Пока мы готовим новый пакет nuget .Skills, вы можете двигаться дальше, взяв последнюю сборку из myget, и в то же время, вероятно, будет разумно взять и решения из myget, поскольку они создаются вместе.

Существует пример установки из командной строки, но вы также можете добавить источник пакета в Visual Studio по адресу :

После того, как у вас будут эти версии, повторно разверните своего бота в Azure и повторите попытку.

Спасибо за помощь в диагностике.

@darrenj Мне кажется, что теперь он работает, отличная работа!

Отлично, спасибо, что сообщили нам. К концу недели мы опубликуем новую сборку .solutions и .skills для nuget.

@darrenj Для меня, когда я пытаюсь создать свой проект навыков, у меня возникает эта ошибка.
SkillEvents не содержит определения для SkillBeginEventName, MainDialog.cs, строка 128.

Удалите этот обработчик - последний пакет Skills перешел на использование SemanticObject (через SkillMiddleware), а не на использование отдельного события, поэтому вам не нужно обрабатывать это движение вперед.

                case SkillEvents.SkillBeginEventName:
                    {
                        var state = await _stateAccessor.GetAsync(dc.Context, () => new SkillState());

                        if (dc.Context.Activity.Value is Dictionary<string, object> userData)
                        {
                            // Capture user data from event if needed
                        }

                        break;
                    }

Удалите этот обработчик - последний пакет Skills перешел на использование SemanticObject (через SkillMiddleware), а не на использование отдельного события, поэтому вам не нужно обрабатывать это движение вперед.

                case SkillEvents.SkillBeginEventName:
                    {
                        var state = await _stateAccessor.GetAsync(dc.Context, () => new SkillState());

                        if (dc.Context.Activity.Value is Dictionary<string, object> userData)
                        {
                            // Capture user data from event if needed
                        }

                        break;
                    }

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

emulator3

Я думаю, что он получил еще одно изменение / исправление как часть обновления. @ lzc850612 тот, чтобы взглянуть сразу, как только проснетесь ;-)

Мы только что опубликовали новые пакеты nuget для nuget, которые вы можете обновить и удалить ежедневную версию сборки. Мы просто немного логики, которая требует изменения вашего MainDialog.cs в вашем помощнике, что, я думаю, является корнем проблемы, которую вы видели выше.

В RouteAsync удалите эту строку

  // Pass the activity we have
  var result = await dc.ContinueDialogAsync();

WebChat работает "из коробки" с новыми изменениями.

Убедитесь, что все ваши пакеты nuget обновлены ... и навыки работают с веб-чатом!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги