微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Amazon Lex中创建一个机器人以获取天气更新?

如何解决如何在Amazon Lex中创建一个机器人以获取天气更新?

我正在尝试获取天气更新。 Python代码运行良好,但是我无法将其嵌入到Amazon Lex中。它显示收到的错误响应。

from botocore.vendored import requests
    # using openweathermap api 
    api_address = 'http://api.openweathermap.org/data/2.5/weather?appid=__api_key_here__&q='
    city = input("Enter city >> ")

    url = api_address + city

    json_data = requests.get(url).json()
    formatted_data = json_data['weather'][0]['main']
    desc_data = json_data['weather'][0]['description']
    print(formatted_data)
    print(desc_data)
    # print(json_data)

解决方法

  • 确保api运行完美的python代码。
  • 取决于下一个状态,您需要将类型保留为ElicitSlot或ElicitInten
  • 如果您将lambda用作lex的后端,则需要以以下格式发送响应。
  • 您可以参考Lambda响应格式的链接 Lambda response formats

/// Iterates a set through all combinations of its elements.
///
/// Adds and removes elements from [set] to make it iterate through all
/// possible combinations of its initial elements. 
/// The current value of the iterator is always [set].
/// If iterated through to the end,the [set] ends up with all its original elements.
Iterable<Set<E>> subsets<E>(Set<E> set) sync* {
  if (set.length >= 32) {
    throw ArgumentError.value(set,"set","must have less than 32 elements");
  }
  var list = [...set];
  var prev = 0;
  var counter = 0;
  do {
    yield set; 
    var next = ++counter ^ (counter >> 1);
    var bit = prev ^ next;  // One bit set.
    var index = bit.bitLength - 1;
    if (index >= list.length) index = 0;
    var element = list[index];
    if (next & bit == 0) {
      set.add(element);
    } else {
      set.remove(element);
    }
    prev = next;
  } while (set.length < list.length);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。