Бессерверное развертывание Watson? (Вопросы по интеграции с другими сервисами RESTful)

Введение: мне кажется, что мне не хватает чего-то ужасно очевидного о том, как Watson Assistant должен быть разработан на уровне архитектуры, но, возможно, это не так.

Конкретная проблема, с которой я столкнулся, заключается в том, что я не могу получать вызовы API для получения информации обратно в беседу.

Более серьезная проблема заключается в том, что я не уверен, что правильно настроил все это для долгосрочной перспективы того, что я пытаюсь выполнить.

Цель: я создаю круглосуточную службу поддержки клиентов уровня 1 для наших управляемых сетей. Пользователь одной из наших сетей должен иметь возможность с помощью SMS, веб-чата, мессенджера Facebook и, в конечном итоге, по телефону, запрашивать:

  1. Инструкции по подключению их конкретного устройства (ПК, Mac, Chromebook, Xbox, Apple TV и т. Д.)
  2. Обратитесь за помощью в устранении неполадок, если инструкции не приводят к успешному подключению. (Пошаговые инструкции по удалению сохраненной сети, перезапуску беспроводной карты и т. Д.)
  3. Помогите создать дело - в этот момент разговор превращается в Watson, запрашивающего кучу информации, например, в какое время и дату они впервые столкнулись с проблемой, какие-либо другие времена / даты, когда они столкнулись с проблемой, их MAC-адрес и т. Д. И т. Д.

Проблемы: у меня большая часть диалогов построена и работает хорошо. Получение информации через Entities, сохранение в контекстных переменных, вывод их обратно, чтобы разговор работал, отклонения и т. Д. - все работает.

Я не могу, хоть убей, понять, что я делаю неправильно, пытаясь ПОЛУЧИТЬ информацию из внешнего API.

У нас есть «ежедневный пароль» для наших гостевых сетей, и мы хотели бы, чтобы пользователь, запрашивающий ежедневный пароль, получил его. Это включает очень простой запрос GET к общедоступному серверу.

Я создал функцию BlueMix / IBM Cloud, которая отлично работает, но я не могу успешно позвонить или получить от нее информацию.

Ошибка Watson:

Error when updating output with output of dialog node id [node_66_xxxxxxxxxx]. Node output is [{"text":{"values":["Today's password for <? $guestNetwork.ssid ?> is <? $guestNetwork.password ?>"],"selection_policy":"sequential"}}] SpEL evaluation error: Expression [ $guestNetwork.ssid ] converted to [ context['guestNetwork'].ssid ] at position 0: EL1007E: Property or field 'ssid' cannot be found on null (and there is 1 more error in the log)

Эта ошибка заставляет меня думать, что я неправильно определяю переменную результата в Watson или неправильно пытаюсь получить ее в разговоре, потому что я знаю, что мой код возвращает SSID и пароль, когда я запускаю его в консоли BlueMix.

JSON для самого действия (и да, я устанавливаю учетные данные в предыдущем узле):

{
  "output": {
    "text": {
      "values": [
        "Today's password for <? $guestNetwork.ssid ?> is <? $guestNetwork.psk ?>"
      ],
      "selection_policy": "sequential"
    }
  },
  "actions": [
    {
      "name": "get-http-resource/getGuestNetworkPassword",
      "type": "server",
      "credentials": "$private.myCredentials",
      "result_variable": "$guestNetwork"
    }
  ]
}

Вопрос:

  1. Возможна ли моя идея «бессерверного» Watson при использовании внешних сервисов Watson ‹-> IBM Cloud ‹->? В настоящее время у нас нет «приложения» или сервера, это все интеграции между существующими сервисами.

  2. Может ли кто-нибудь помочь мне понять, что я делаю неправильно, пытаясь получить доступ к этой переменной?

Бонусные баллы: как узнать, что доступ к переменной будет только после успешного завершения действия в облаке IBM? Обычно, если доступ к информации через написанную мной функцию IBM Cloud занимает 1,5 секунды, нужно ли мне приостанавливать диалог на 1,5 секунды? Или я совершенно не понимаю, как получать внешнюю информацию в Watson и из него?

РЕДАКТИРОВАТЬ: после просмотра видео Митча я изменил пару вещей, и сообщение об ошибке превратилось в следующее:

"Ошибка при обновлении вывода с выводом идентификатора диалогового узла [node_66_1533646714776]. Вывод узла: [{" text ": {" values ​​": [" Сегодняшний пароль для is "]," selection_policy ":" sequence "}}] Оценка SpEL ошибка: Выражение [$ guestNetwork ['ssid']] преобразовано в [context ['guestNetwork'] ['ssid']] в позиции 24: EL1012E: Невозможно проиндексировать ошибку с нулевым значением.


person Daniel Mulroy    schedule 08.08.2018    source источник


Ответы (2)


Не видя вашего диалога, это предположение, но наиболее распространенная ошибка, которую я вижу, заключается в том, что вам просто нужно перейти к дочернему узлу диалогового окна после выполнения вызова действия. Вы не можете выполнить вызов действия и показать ответ в том же узле диалогового окна, поскольку диалоговому окну требуется возможность выполнить действие.

Это описано в моем видео здесь: https://ibm-dte.mybluemix.net/ibm-watson-assistant?refresh см. видео о диалоговых выносках. Это 13 минут, я уверен, что вам нужно всего около двух из них, но все же должно помочь.

То, что вы пытаетесь сделать, определенно возможно, особенно если это работает в среде облачных функций.

person Mitch    schedule 08.08.2018
comment
Привет, Митч! Ваше видео было очень полезным. Я изменил пару вещей, но проблемы все еще возникают. # 1, я установил учетные данные в узле приветствия, как и вы. # 2, очень помогло увидеть, как вы назвали переменные. К сожалению, я все еще получаю сообщение об ошибке, хотя теперь все по-другому. - person Daniel Mulroy; 11.08.2018
comment
В чем ошибка? Предыдущая ошибка заставляет меня думать, что с кредитами все в порядке, иначе раньше было бы 404. - person Mitch; 12.08.2018
comment
Спасибо, Митч, см. Ошибку, упомянутую в конце сообщения ... сообщение об ошибке превратилось в следующее: - person Daniel Mulroy; 13.08.2018
comment
так что он говорит, что в этом объекте ничего нет ... не могли бы вы присоединиться к этому Slack-сообществу, чтобы мы могли показать своего рода экран? wdc-slack-inviter.mybluemix.net - person Mitch; 14.08.2018

Мы воссоздали действие, используя пакет по умолчанию (не имея его в подпакете), и оно сразу же начало работать.

На заметку: редактор диалогов Watson не любит тире в имени пакета.

Спасибо, Митч!

person Daniel Mulroy    schedule 15.08.2018