putEvents中的Amazon Pinpoint端点-JavaScript SDK的方法不起作用

时间:2019-09-19 17:54:35

标签: node.js amazon-web-services api sdk

我已使用API​​ Gateway将AWS Pinpoint集成到我的应用程序中,并且事件已正确引入Pinpoint中。但是,尽管我提供了“地址”字段,但对于每个新请求都会创建一个新的端点。

我查看了AWS提供的所有文档:

https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-events.html

https://docs.aws.amazon.com/pinpoint/latest/developerguide/integrate-events.html

主要使用了此类类文档,该文档似乎缺少一些信息:

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Pinpoint.html

{% capture customer_logout_link_url %}{{ 'Log Out' | customer_logout_link }}{% endcapture %}
{% capture customer_login_link_url %}{{ 'Log In ' | customer_login_link }}{% endcapture %}
{% capture customer_register_link_url %}{{ 'Register' | customer_register_link }}{% endcapture %}

{% if shop.customer_accounts_enabled %}
    {% if customer %}
        <a href="/account">My Account</a>
        {{ customer_logout_link_url }}
    {% else %}
        {{ customer_login_link_url }}
        {{ customer_register_link_url }}
    {% endif %}
{% endif %}

在每个请求之后,我确实定义了一个新的Pinpoint端点,尽管我为每个Endpoint提供了唯一的Address-value。

a)我需要做什么才能使端点唯一?

b)如何报告登录,注销和其他事件?

^在文档中找不到它们

1 个答案:

答案 0 :(得分:1)

Pinpoint docs / class文件的约定不完整,遗漏了所需的信息。从我的测试和使用API​​的经验来看,这就是我希望可以使用的东西。

a)我需要做什么才能使端点唯一?

Pinpoint.putEvents不仅为端点创建新事件,而且创建或更新端点数据

Pinpoint.putEvents可以创建或更新端点的事实导致您在每次事件请求后创建新端点时遇到的错误。

这是因为您在设置requestId的键时为发送的每个事件意外地创建了一个等于随机BatchItem的新端点。 BatchItem的对象键实际上应该是事件应与之关联的端点ID,而不是事件的requestId(文档中完全没有提到!)

要保持端点唯一,除了地址和唯一的UserId外,您首先需要了解用户的唯一端点(这在精确的文档中似乎是缺失的。我在尝试更新或删除端点时意识到了这一点)您无法按地址进行操作,因为您需要端点ID)。在您的示例中,如果您打算为一个用户提供多个频道,则我会选择与该频道类型关联的userId相关的内容,因为精确定位确实允许通过电子邮件,短信和录音电话发送消息(您已列出“自定义“但是我会尝试使用与消息传递方式实际相关的枚举之一。我相信这可以使此端点与不同类型的精确活动和向用户发送消息的过程更好地配合使用)

    // Original code adding eventParam to param.EventsRequest.BatchItem incorrectly by random requestId
    var requestId = (new Date().getTime()) + Math.floor(Math.random() * 10);
    param.EventsRequest.BatchItem[requestId] = eventParam; 

   // correct code associating eventParam with a unique endpointId
    var endpointId = eventParam.Endpoint.User.UserId+'CUSTOM'
    param.EventsRequest.BatchItem[endpointId] = eventParam; 

另外请记住,您添加到eventParam.endpoint的所有信息将在调用Pinpoint.putEvents时更新/覆盖当前为这​​些endpointId属性存储的内容,因此请注意

b)如何报告登录,注销和其他事件?

我相信要按照在Pinpoint app events documentation中的事件命名约定来报告在精确仪表板中可视化的登录/注销

因此登录时,事件名称为_userauth.sign_in 我认为登出并不会自动显示在Anlaytics->使用情况仪表板上,但是您可以使用任何一致的事件名称来登出,然后使用精确的过滤器查看时间上的那些事件。