本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Amazon Chime SDK 消息传递设置频道处理器
要开始使用频道流,您需要先创建一个处理器 Lambda 函数来处理您的用例的预处理。例如,您可以更新消息内容或元数据、拒绝消息并阻止发送消息,或者允许原始消息通过。
先决条件
-
Lambda 函数必须与位于同一个 AWS 账户和相同 AWS 区域中。 AppInstance
授予调用权限
您必须向 Amazon Chime SDK 消息收发服务授予权限才能调用 Lambda 资源。有关权限的更多信息,请参阅将基于资源的策略用于 AWS Lambda。例如:
-
主体:“messaging.chime.amazonaws.com”
动作:lambda:InvokeFunction
效果:允许
AWSSourceAccount::
Your AWS AccountId。AWS: SourceArn:
"arn:aws:chime:region:AWS AccountId:appInstance/"
注意
您可以提供特定的应用程序实例 ID 来调用您的处理器,也可以使用通配符允许账户中的所有 Amazon Chime SDK 应用程序实例调用您的处理器。
授予回调权限
您还需要允许您的处理器 Lambda 函数调用 ChannelFlowCallback API。有关执行此操作的信息,请参阅 AWS Lambda 开发人员指南中的 AWS Lambda 执行角色。
您可以向 Lambda 函数的执行角色添加内联策略。此示例允许处理器调用 ChannelFlowCallback API。
注意
遵循 Lambda 函数的最佳实践。有关更多信息,请参阅以下主题:
调用处理器 Lambda 函数
当用户发送消息时,以下输入请求会调用处理器 Lambda 函数。
{ "EventType": "string" "CallbackId": "string" "ChannelMessage": { "MessageId": "string", "ChannelArn": "string", "Content": "string", "Metadata": "string", "Sender":{ "Arn": "string", "Name": "string" }, "Persistence": "string", "LastEditedTimestamp": "string", "Type": "string", "CreatedTimestamp": "string", } }
- EventType
-
正在发送到处理器的事件。该值是一个
CHANNEL_MESSAGE_EVENT常数。 - CallbackId
-
从处理器调用
ChannelFlowCallbackAPI 时使用的令牌。 - ChannelMessage
-
ChannelArn该频道的 ARN
Content:待处理的消息内容
CreatedTimestamp消息的创建时间
LastEditedTimestamp编辑消息的时间
MessageId消息标识符
Metadata:待处理的消息元数据
Persistence:布尔值,用于控制消息是否保留在后端。有效值:
PERSISTENT | NON_PERSISTENTSender:消息发件人。Type:一个 identity 对象。
Type:消息类型。ChannelFlow 仅支持
STANDARD消息类型。有效值:STANDARD
处理器函数决定每条消息的以下内容。
-
是更新消息内容、元数据还是两者兼而有之
-
是否拒绝消息
-
是否保留消息不变
处理完成后,处理器 Lambda 函数会将结果发送回 Amazon Chime SDK 消息传递服务,这样就可以将消息发送给所有收件人。消息状态一直处于 PENDING 标记状态,直到处理器 Lambda 函数发回结果。处理器 Lambda 函数有 48 小时的时间来发送结果。在此之后,我们无法保证消息传递,ChannelFlowCallback API 会引发“Forbidden Exception”错误消息。要发回结果,请调用 ChannelFlowCallback API。