返回顶部
首页 > 资讯 > 精选 >AWS Lex + Lambda
  • 365
分享到

AWS Lex + Lambda

2023-06-04 00:06:58 365人浏览 独家记忆
摘要

AWS Lex Create Bots --> Try a sample {OrderFlowers} La  Lambda initialization and validation --> 添加

AWS Lex 

Create Bots --> Try a sample {OrderFlowers} 

La  Lambda initialization and validation --> 添加定义的Lambda function

AWS Lex + Lambda

Slots --> 段值

AWS Lex + Lambda

SlotType--> define values of Slots

AWS Lex + Lambda

Slots --> FlowerType Prompt --> Prompt response cards --> URL: Global S3 https://s3.cn-north-1.amazonaws.com.cn/sides-share/AWS+INNOVATE+2018/builders_workshop/Flower.jpeg   Button title/value for each button.

AWS Lex + Lambda

修改后,“Save Intent”保存,click “Build” to test as below --

AWS Lex + Lambda AWS Lex + Lambda AWS Lex + Lambda

Publish to publish Slack/Facebook Channel.

AWS Lambda

Create Function --> Blueprints (filter "lex") --> Choose "lex-order-flowers-python" --> Role: LexRoleOrderFlowers

Function Code as below :

"""This sample demonstrates an implementation of the Lex Code Hook Interfacein order to serve a sample bot which manages orders for flowers.Bot, Intent, and Slot models which are compatible with this sample can be found in the Lex Consoleas part of the 'OrderFlowers' template.For instructions on how to set up and test this bot, as well as additional samples,visit the Lex Getting Started documentation Http://docs.aws.amazon.com/lex/latest/dg/getting-started.html."""import mathimport dateutil.parserimport datetimeimport timeimport osimport loggingimport boto3import JSONlogger = logging.getLogger()logger.setLevel(logging.DEBUG)""" --- Helpers to build responses which match the structure of the necessary dialog actions --- """def get_slots(intent_request):    return intent_request['currentIntent']['slots']def elicit_slot(session_attributes, intent_name, slots, slot_to_elicit, message):    return {        'sessionAttributes': session_attributes,        'dialogAction': {            'type': 'ElicitSlot',            'intentName': intent_name,            'slots': slots,            'slotToElicit': slot_to_elicit,            'message': message        }    }def close(session_attributes, fulfillment_state, message):    response = {        'sessionAttributes': session_attributes,        'dialogAction': {            'type': 'Close',            'fulfillmentState': fulfillment_state,            'message': message        }    }    return responsedef delegate(session_attributes, slots):    return {        'sessionAttributes': session_attributes,        'dialogAction': {            'type': 'Delegate',            'slots': slots        }    }""" --- Helper Functions --- """def parse_int(n):    try:        return int(n)    except ValueError:        return float('nan')def build_validation_result(is_valid, violated_slot, message_content):    if message_content is None:        return {            "isValid": is_valid,            "violatedSlot": violated_slot,        }    return {        'isValid': is_valid,        'violatedSlot': violated_slot,        'message': {'contentType': 'PlainText', 'content': message_content}    }def isvalid_date(date):    try:        dateutil.parser.parse(date)        return True    except ValueError:        return Falsedef validate_order_flowers(flower_type, date, pickup_time, number):    flower_types = ['lilies', 'roses', 'tulips']    if flower_type is not None and flower_type.lower() not in flower_types:        return build_validation_result(False,                                       'FlowerType',                                       'We do not have {}, would you like a different type of flower?  '                                       'Our most popular flowers are roses'.fORMat(flower_type))    if date is not None:        if not isvalid_date(date):            return build_validation_result(False, 'PickupDate', 'I did not understand that, what date would you like to pick the flowers up?')        elif datetime.datetime.strptime(date, '%Y-%m-%d').date() <= datetime.date.today():            return build_validation_result(False, 'PickupDate', 'You can pick up the flowers from tomorrow onwards.  What day would you like to pick them up?')    if pickup_time is not None:        if len(pickup_time) != 5:            # Not a valid time; use a prompt defined on the build-time model.            return build_validation_result(False, 'PickupTime', None)        hour, minute = pickup_time.split(':')        hour = parse_int(hour)        minute = parse_int(minute)        if math.isnan(hour) or math.isnan(minute):            # Not a valid time; use a prompt defined on the build-time model.            return build_validation_result(False, 'PickupTime', None)        if hour < 10 or hour > 16:            # Outside of business hours            return build_validation_result(False, 'PickupTime', 'Our business hours are from ten a m. to four p m. Can you specify a time during this range?')    if number is not None:        num = parse_int(number)        if num < 0 or num > 5:            return build_validation_result(False,'FlowerNumber', 'Please input a number between 1~5. We can offer 1~5 at once.')    return build_validation_result(True, None, None)""" --- Functions that control the bot's behavior --- """def order_flowers(intent_request):    """    Performs dialog management and fulfillment for ordering flowers.    Beyond fulfillment, the implementation of this intent demonstrates the use of the elicitSlot dialog action    in slot validation and re-prompting.    """    flower_type = get_slots(intent_request)["FlowerType"]    date = get_slots(intent_request)["PickupDate"]    pickup_time = get_slots(intent_request)["PickupTime"]    number = get_slots(intent_request)["FlowerNumber"]    source = intent_request['invocationSource']    if source == 'DialoGCodeHook':        # Perform basic validation on the supplied input slots.        # Use the elicitSlot dialog action to re-prompt for the first violation detected.        slots = get_slots(intent_request)        validation_result = validate_order_flowers(flower_type, date, pickup_time, number)        if not validation_result['isValid']:            slots[validation_result['violatedSlot']] = None            return elicit_slot(intent_request['sessionAttributes'],                               intent_request['currentIntent']['name'],                               slots,                               validation_result['violatedSlot'],                               validation_result['message'])        # Pass the price of the flowers back through session attributes to be used in various prompts defined        # on the bot model.        output_session_attributes = intent_request['sessionAttributes'] if intent_request['sessionAttributes'] is not None else {}        if number is not None:            output_session_attributes['Price'] = int(number) * 5  # Elegant pricing model        return delegate(output_session_attributes, get_slots(intent_request))        sns = boto3.client('sns')    snsmessage = {'content': 'Thanks, your order for {} of {} has been placed and will be ready for pickup by {} on {}'.format(number, flower_type, pickup_time, date)}    #snsmessage = {"test":"message test"}    sns.publish(        TopicArn='YOUR_Topic_ARN',         Message=json.dumps(snsmessage)    )    # Order the flowers, and rely on the Goodbye message of the bot to define the message to the end user.    # In a real bot, this would likely involve a call to a backend service.    return close(intent_request['sessionAttributes'],                 'Fulfilled',                 {'contentType': 'PlainText',                  'OrderConfirm': 'Thanks, your order for {} of {} has been placed and will be ready for pickup by {} on {}'.format(number, flower_type, pickup_time, date)})""" --- Intents --- """def dispatch(intent_request):    """    Called when the user specifies an intent for this bot.    """    logger.debug('dispatch userId={}, intentName={}'.format(intent_request['userId'], intent_request['currentIntent']['name']))    intent_name = intent_request['currentIntent']['name']    # Dispatch to your bot's intent handlers    if intent_name == 'OrderFlowers':        return order_flowers(intent_request)    raise Exception('Intent with name ' + intent_name + ' not supported')""" --- Main handler --- """def lambda_handler(event, context):    """    Route the incoming request based on intent.    The JSON body of the request is provided in the event slot.    """    # By default, treat the user request as coming from the America/New_York time zone.    os.environ['TZ'] = 'America/New_York'    time.tzset()    logger.debug('event.bot.name={}'.format(event['bot']['name']))    return dispatch(event)

--结束END--

本文标题: AWS Lex + Lambda

本文链接: https://lsjlt.com/news/236020.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • AWS Lex + Lambda
    AWS Lex Create Bots --> Try a sample {OrderFlowers} La  Lambda initialization and validation --> 添加...
    99+
    2023-06-04
  • AWS Lambda 的断路器
    哈喽!大家好,很高兴又见面了,我是编程网的一名作者,今天由我给大家带来一篇《AWS Lambda 的断路器》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面...
    99+
    2024-04-05
  • 连接关闭时 aws lambda 崩溃
    亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《连接关闭时 aws lambda 崩溃》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。问题...
    99+
    2024-04-04
  • 2个参数从golang调用lambda aws
    欢迎各位小伙伴来到编程网,相聚于此都是缘哈哈哈!今天我给大家带来《2个参数从golang调用lambda aws》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都...
    99+
    2024-04-05
  • AWS lambda golang iotdataplane.PublishInput() 有效负载始终为空
    php小编新一提醒大家,在使用AWS Lambda Golang编程语言时,有一点需要注意:在使用iotdataplane.PublishInput()方法时,其有效负载(Payloa...
    99+
    2024-02-11
  • AWS Lambda 中的 Websocket URL 超时达到错误
    在AWS Lambda中使用Websocket时,有时会遇到Websocket URL超时错误。这个问题可能导致无法建立或保持与Websocket的连接,影响应用程序的正常运行。本文将...
    99+
    2024-02-10
  • go aws-lambda 与 terraform 中的 exec 格式错误
    php小编新一为您介绍一种常见问题:“go aws-lambda 与 terraform 中的 exec 格式错误”。在使用aws-lambda和terraform创建函数时,可能会遇...
    99+
    2024-02-13
  • 如何通过AWS的Lambda和API Gateway走向Serverless
    本篇内容介绍了“如何通过AWS的Lambda和API Gateway走向Serverless”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简...
    99+
    2023-06-16
  • golang中的aws lambda由sqs触发并出现类型错误
    php小编百草这次为大家带来了关于golang中的AWS Lambda的问题。在使用AWS SQS触发Lambda函数时,可能会出现类型错误的情况。这个问题可能导致Lambda函数无法...
    99+
    2024-02-09
  • 解决 AWS Lambda 出现“内部服务器错误”的 Go 设置问题
    编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《解决 AWS Lambda 出现...
    99+
    2024-04-04
  • AWS Networking
    pcx-1a2b1a2b) above, assume the VPCs have the following information:VPC A: IPv6 CIDR block is 2001:db8:1234:1a00::/...
    99+
    2023-06-04
  • 如何使用无服务器 WarmUp 插件检测 Go AWS Lambda 函数中的预热调用?
    问题内容 我正在使用无服务器 WarmUp 插件来使我的 Go AWS Lambda 函数保持温暖。我需要检测插件何时调用 Lambda 函数,以便我可以返回特定响应。如何正确检测 G...
    99+
    2024-02-06
  • AWS SDK Python
    安装pip[root@xxxxxx ~]# python get-pip.py Collecting pip   Downloading ...
    99+
    2024-04-02
  • AWS之s3
    AWS已在中国落地!详情请猛击此处。S3是AWS中的存储服务,为用户随时随地存储和访问大量数据提供了Web service接口,为开发者提供了一种可以快速低廉访问数据存储的服务。并且,开发者可以利用s3实现ec2访问大量的数据资源。其价格低...
    99+
    2023-01-31
    AWS
  • python lambda
    lambda 相当于是一个匿名函数,因为python是属于脚本语言,所以在和shell结合中使用起来是很方便的,具体怎么用,通过列子来说明吧>>> g = lambda x : 3 * x>>> g(4)...
    99+
    2023-01-31
    python lambda
  • SQL Linq Lambda
      1、 查询Student表中的所有记录的Sname、Ssex和Class列。select sname,ssex,class from studentLinq:    from s in Students    selec...
    99+
    2016-08-13
    SQL Linq Lambda 数据库入门 数据库基础教程 数据库 mysql
  • aws云服务器
    Sws是一种流行的云服务器,具有高可靠性、高可用性和可扩展性等优势。高可靠性:Sws是基于Openstack和Kubernetes架构的,具有很高的安全性和可靠性。它的容错机制和备份功能可以保护用户数据的安全。可扩展性:Sws可以快速扩展以...
    99+
    2023-10-26
    服务器 aws
  • Amazon AWS 安装 Pytho
    Python 2713 编译安装 下载 Python 解压 编译安装 推荐 AWS 免费一年使用 下载 Python mkdir ~/dev-tools cd ~/dev-tools wget https://w...
    99+
    2023-01-31
    Amazon AWS Pytho
  • Python 操作 AWS S3
    详情 https://boto3.readthedocs.io/en/latest/reference/services/s3.htm pip install boto3 == 1.6.12 #### pip install bo...
    99+
    2023-01-31
    操作 Python AWS
  • python——lambda函数
    lambda 表达式,又称匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 name = lambda [list] : 表达式 其中,定义 lamb...
    99+
    2023-09-04
    python 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作