如何在 Lex 中不提示用户的情况下调用另一个意图?

sid*_*491 5 chatbot amazon-web-services aws-lambda amazon-lex

是否可以在不提示用户的情况下从意图 A 的 lambda 函数触发意图 B?
假设用户输入了一些东西并且一个意图-A 被触发,经过一些处理我想触发一些其他的意图,即意图-B。
用户还可以通过特定的话语直接触发 Intent-B。任何帮助表示赞赏。

sid*_*491 4

我最终执行了以下操作,从意图 A 调用意图 B,而不向用户提示任何内容:

  • 授予调用 lambda 函数的权限,即 Intent-A 的 lambda 函数
  • 获取intent-B的后端lambda函数名称
  • 使用 boto3 调用带有所有输入的 lambda 函数
  • 响应将位于响应对象的“Payload”键中
  • 使用 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']
Run Code Online (Sandbox Code Playgroud)