当从Amazon Connect调用时,C#Lambda具有不同的有效负载



我是C#的新手,我有一个在本地工作的lambda,当从lambda控制台进行测试时。我的Lambda期望一个看起来像的有效载荷

{
"PhoneNum": "myphonenumber"
}

我的课看起来像这个

public class PageParams
{
public string EmpId { get; set; }
public string PhoneNum { get; set; }
}

然而,当从Amazon Connect调用我的lambda时,我的参数嵌套在一个看起来像的对象中

{
"Details": {
"ContactData": {
"Attributes": {},
"Channel": "VOICE",
"ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
"CustomerEndpoint": {
"Address": "+1234567890",
"Type": "TELEPHONE_NUMBER"
},
"InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
"InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
"InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
"PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
"Queue": {
"ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"Name": "PasswordReset"
},
"SystemEndpoint": {
"Address": "+1234567890",
"Type": "TELEPHONE_NUMBER"
}
},
"Parameters": {
"PhoneNum": "myphonenumber"
}
},
"Name": "ContactFlowEvent"
}

我不知道如何处理在c#代码中嵌套对象的问题。我想我必须修改PageParams的类,使其具有一个Details对象,其中嵌套了Parameters对象,但我不知道如何编写,而且我在网上找不到任何从Connect调用的C#Lambda的示例。

我该如何更改代码以期望页面参数嵌套在PageParams中。详细信息。参数?

我不熟悉AWS。他们称之为lambda吗?

无论如何,您得到的数据是JSON。您可以在代码中创建新的类来表示它,然后反序列化此响应以创建该类的新实例。这实际上是几节课。

简单的方法是"将json粘贴为类",它位于编辑菜单中的"粘贴特殊"下。

强烈建议使用Newtonsoft。Json。

var result = JaonConvert.DeserializeObject<Details>(jsonString);

如果你只需要一个phoneNum和一个empId,你就不需要任何额外的类,因为你可以通过获得数据

var jsonParced=JObject.Parse(json);
PageParams pageParams= jsonParsed["Parameters"].ToObject<PageParams>();

相关内容

最新更新