技术文章
使用SAP BTP, Kyma运行时扩展SAP营销云
概述
上面的配置允许访问SAP Marketing Cloud api,并提供配置Kyma函数和微服务的能力,以触发SAP Marketing Cloud事件。
这要归功于SAP S/4HANA云扩展性,这是一种使用Cloud Foundry和SAP BTP、Kyma运行时扩展任何S/4系统的通用方式。
一旦配置完成,运行时流将触发SAP BTP中的功能和微服务,Kyma运行时与SAP Marketing Cloud事件。也可以使用提供的凭证调用SAP Marketing Cloud api。
先决条件
- 一个预置的SAP BTP, Kyma运行时。读这个博客开始吧。
- 一个SAP营销云租户,将使用SAP S/4HANA云扩展性和SAP BTP, Kyma运行时进行扩展。
- 启用SAP BTP、Kyma运行时的SAP BTP子帐户上的SAP企业消息传递服务可用的配额。
注册S/4系统(SAP营销云)
- 在SAP BTP驾驶舱中创建一个系统。
- 复制生成的令牌。
- 在SAP营销云中创建一个新的扩展
维护SAP云平台扩展
并提供复制的令牌。
- 在SAP BTP中,为启用SAP BTP、Kyma runtime的子帐户添加SAP S/4HANA Cloud Extensibility的授权。
-
- 选择添加业务计划.
- 选择
SAP S/4HANA云扩展
. - 在下拉菜单中选择已注册的S/4系统。
- 选择两个
消息传递
而且api访问
计划。 - 保存更改
启用调用SAP Marketing Cloud api
提示:有关设置的详细信息api访问
有关SAP S/4HANA云api在Kyma运行时,请参阅SAP帮助门户的官方文档.
本节介绍如何在SAP BTP、Kyma运行时中进行必要的设置,以便能够对SAP Marketing Cloud进行API调用。
- 在SAP BTP, Kyma运行时,访问
SAP S/4HANA云扩展
在服务目录中。
- 属性创建一个新实例
api访问
计划。
在后台,这将:
-
- 在SAP营销云中建立所有必要的沟通安排。
- 创建必要的系统用户来进行API调用。
- 设置API调用所需的任何其他配置。
注意:scenarioId
将取决于SAP营销云的API调用。
- 将创建的实例绑定到Kyma中的函数或微服务。
连接配置将作为环境变量提供给微服务或函数使用。
/** *将此添加到dependencies {"name": "call-mktng-api", "version": "1.0.0", "dependencies": {"axios": "latest"}} */ const axios = require("axios");const baseURI = ' ${process.env['MKTNG_URL']}/sap/opu/odata/ sap/ API_MKT_CAMPAIGN_SRV;v=2 ' console.log(' baseURI is——${baseURI} ');模块。exports = {main: async函数(事件,上下文){try {const response = await axios({method: 'get', url: ' ${baseURI}/Campaigns?$top=2 ', auth:{用户名:进程。env['MKTNG_User'],密码:进程。env['MKTNG_Password']}});console.log (response.data.d.results);返回response.data.d.results} catch(错误){console.log(错误);event.extensions.response.status (500) .send(“错误”);}}}
这样的函数既可以从其他函数内部调用,也可以通过Kyma API规则在外部公开,然后通过URL调用
启用SAP Marketing Cloud事件消费
提示:关于在Kyma运行时启用SAP S/4HANA Cloud事件消耗的详细信息,请参见SAP帮助门户的官方文档.
设置EMS客户端
在Kyma的服务目录中,创建SAP S/4 HANA云扩展
实例。消息传递
计划:
- 为
systemName
,输入已注册的系统名称。 - 提供独一无二的
emClientId
.
它将在后台创建Enterprise Messaging客户机,并设置必要的通信安排。您可以在Enterprise Messaging管理UI中验证创建的客户机。
命名空间看起来如下所示:sap / S4HANAOD / {emClientId}
这个企业消息传递客户端将接收来自SAP Marketing Cloud的事件。要从这个实例捕获事件并将其转发到Kyma,您需要创建另一个Enterprise Messaging客户机。
在subscriberFilter
类创建的相同名称空间SAP S/4 HANA云扩展
的实例消息传递
计划。这样做是为了从该企业消息传递客户机中的名称空间接收事件。
在SAP Marketing Cloud中配置事件
您现在需要在SAP Marketing Cloud中配置您希望发送到SAP BTP、Kyma运行时的各种扩展的所有事件类型。
- 在SAP营销云中,访问企业事件支持.
- 进入频道列表,选择频道名称
SAP_CP_XF_ {emClientId}
- 搜索并选择要发送的事件。
作为一个例子,我选择sap / s4 /本·/ marketingpermission / v1 / marketingpermission / *
.
您将在EMS管理UI中看到相同的事件。
在SAP BTP, Kyma运行时中设置扩展
您现在可以创建一个无服务器的功能或微服务,可以通过企业消息接收来自SAP Marketing Cloud的事件。
这些步骤展示了如何创建函数,但如果您决定使用微服务,流程将类似。
要启用安全访问,您可以选择为公开的webhook设置OAuth2。但是,并不是必须使用OAuth2——客户总是可以使用他们喜欢的身份验证机制,例如基本身份验证或任何其他与EMS webhook一起工作的身份验证机制。
- 在Kyma中设置OAuth2客户端。
注意:客户端id和客户端秘密值是默认编码的。请解码,然后复制到EMS网络钩子详细信息
- 使用API规则公开函数。
配置一个企业消息webhook
要使用事件,您需要转到创建的第二个Enterprise Messaging客户机,并配置队列和订阅,以使SAP BTP、Kyma运行时开始接收事件。然后,你需要创建一个webhook。
- 为此EMS客户端创建一个新队列。
- 创建队列订阅。
- 通过设置配置队列订阅主题属性最初创建的名称空间
消息传递
SAP S/4HANA云扩展实例。
- 设置网络钩子。
- webhook url是在Kyma运行时创建的API规则的url,用于接收事件。
- 为在Kyma运行时中创建的OAuth客户端客户端提供客户端id和客户端秘密。
- 提供令牌URL。这是一种形式
https://oauth2.{kyma集群域}/oauth2/token
{“类型”:“sap.s4.beh.marketingpermission.v1.MarketingPermission.Changed.v1”、“specversion”:“1.0”,“源”:“/违约/ sap.s4.beh / 000000000730096987”,“id”:“+ hY + VeskHtuDiNMBjQ0Tgg = =”,“时间”:“2020 - 10 - 12 t04:51:30z”、“datacontenttype”:“application / json”、“数据”:{“MarketingPermissionUUID”:“fa163e0b - 249 b - 1 - ee9 b48b - 5 ab2bab3c4b8”、“PermissionGranted”:" Y "}}
谢谢你,高拉夫!这是一个非常有用的指南
嗨Gaurav,
谢谢你的博客。请您告诉我您使用的是哪个市场营销云版本,您是否需要做任何额外的步骤来启用与Kyma运行时集成所需的通信场景?
问候,
萨尼塔
嗨萨尼塔,
你可以试试2008版。请确保您登录的用户有足够的信息来执行管理操作,如创建“扩展”等。
嗨Gaurav,
我们正试图建立这样的场景,但我们发现我们没有一个“企业事件支持”应用程序在营销云。我们是否缺少其他的先决条件?
最好的问候,
曼努埃尔
嗨Manuel,
你可以与负责你的市场准入的人取得联系。也许缺少适当的访问权限。您使用的是哪个版本?
最好的问候,
Gaurav艾比
嗨Manuel,
跟随营销云集成指南,您需要在Marketing Cloud系统中执行两个步骤
注意,要访问应用程序“企业事件支持”,您需要通过相应的业务目录扩展管理员的业务角色。如果您找不到目录,请提出支持单,让同事进行调查,并找出问题的根本原因。
最好的问候,约瑟夫