如何在不提示Lex用户的情况下调用另一个意图? [英] How to call another intent without prompting to user in Lex?

查看:75
本文介绍了如何在不提示Lex用户的情况下调用另一个意图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在不提示用户的情况下从intent-A的lambda函数触发intent-B? 假设用户键入了一些内容并触发了意图A,在经过一些处理后,我想触发其他意图,即意图B.
用户还可以通过特定话语直接触发意图B. 感谢您的帮助.

Is it possible to trigger intent-B from the lambda function of intent-A without prompting to user?
Suppose user typed something and an intent-A is fired, after some processing I want to trigger some other intent i.e intent-B.
User can also directly trigger intent-B through specific utterances. Any help is appreciated.

推荐答案

我最终在下面进行了从intent-A调用intent-B的调用,而没有提示用户:

I ended up doing below to call intent-B from intent-A without prompting anything to user:

  • 可以访问lambda函数来调用lambda函数,即intent-A的lambda函数
  • 获取intent-B的后端lambda函数的名称
  • 使用boto3调用所有输入的lambda函数
  • 响应将在响应对象的有效负载"键中
  • 使用read()方法获取响应
  • 在['dialogAction'] ['message'] ['content']中获取实际输出
  • 使用默认的close()方法返回

导入boto3

client = boto3.client('lambda')
data = {'messageVersion': '1.0', 'invocationSource': 'FulfillmentCodeHook', 'userId': '###', 
        'sessionAttributes': {}, 'requestAttributes': None, 
        'bot': {'name': '###', 'alias': '$LATEST', 'version': '$LATEST'}, 
        'outputDialogMode': 'Text', 
        'currentIntent': {'name': '###', 'slots': {'###': '###'}, 
        'slotDetails': {'###': {'resolutions': [], 'originalValue': '###'}}, 
        'confirmationStatus': 'None'}, 
        'inputTranscript': '###'}
response = client.invoke(
    FunctionName='{intent-B lambda function}',
    InvocationType='RequestResponse',
    Payload=json.dumps(data)
)
output = json.loads(response['Payload'].read())['dialogAction']['message']['content']

这篇关于如何在不提示Lex用户的情况下调用另一个意图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆