的用户活动事件事件API来启动一个ZIS流。您可以使用Events API来跟踪第三方系统中发生的用户事件。例如,您可以使用API来跟踪客户的购买或网站访问。

免责声明:亚博Zendesk提供本文仅用于指导目的。示例集成并不适用于生产环境。

你需要什么?

要完成本教程,您需要以下内容:

创建集成

您创建的ZIS集成为名为Acme的在线商店路由退款请求。商店使用Events API作为用户活动事件来跟踪退款请求。当积分检测到a创建的用户活动事件时,它检查该事件是否是退款请求。如果不是,则集成不执行任何操作。

如果事件是退款请求,集成将检查退款金额。如果金额为100美元或更少,则集成将事件数据发布到外部目标。此目标表示用于启动退款的外部API。

如果退款金额超过100美元,则集成将获得相关客户的个人资料。然后集成检查客户的商店会员级别。如果客户拥有高级会员资格,则集成开始退款。否则,集成将为退款请求创建一个Zendesk票证。亚博

注意:ZIS可以多次重试一个ZIS流。在生产环境中,确保外部退款API支持幂等性。幂等性允许您重试请求,而无需多次执行相同的操作。例如,如果启动退款的API请求由于网络错误而失败,ZIS将重试该请求。幂等性保证退款只执行一次,而不考虑相关API请求的数量。

要创建集成

  1. 创建一个名为“zendesk”的OAuth连接。亚博您将使用该连接对集成的ZIS流中的Zendesk API请求进行身份验证。亚博

    在典型的设置中,管理员使用私有Zendesk应用程序创建OAuth连接。亚博在本教程中,您将创建没有应用程序的“zendesk”OAuth连接。亚博

    要创建连接,请按照中的步骤操作为Zendesk创建OAuth连接亚博。然后回到这里。

  2. 创建一个JSON文件my_zis_bundle.json

  3. 将以下包骨架添加到my_zis_bundle.json

                   
    “名称”“自定义活动事件的示例ZIS集成”“描述”“批准和发送退款请求”“zis_template_version”“2019-10-14”“亚博电脑端资源”“GetUserProfile”“_placeholder_”"ZIS自定义动作定义在这里"}“Create亚博ZendeskTicket”“_placeholder_”"ZIS自定义动作定义在这里"}“InitiateRefund”“_placeholder_”"ZIS自定义动作定义在这里"}“RefundRequestFlow”“_placeholder_”“ZIS流到这里”}“RefundRequestJobSpec”“_placeholder_”“ZIS的工作说明书在这里”}}}

    在接下来的步骤中,您将定义自定义操作、ZIS流和作业规范。

  4. my_zis_bundle.json,替换GetUserProfile具有以下自定义操作定义的占位符。

                   
    “GetUserProfile”“类型”“子::行动::Http”“属性”“名称”“GetUserProfile”“定义”“方法”“获得”美元”的道路。”“/ api / v2 / user_profiles / {{$ .profile_id}}”“connectionName”“亚博zendesk”}}}

    当被调用时,该操作向Zendesk Profiles API发送一个POST请求亚博通过配置文件id获取配置文件端点。

  5. 取代Create亚博ZendeskTicket具有以下自定义操作定义的占位符。

                   
    “Create亚博ZendeskTicket”“类型”“子::行动::Http”“属性”“名称”“Create亚博ZendeskTicket”“定义”“方法”“职位”美元”的道路。”“/ api / v2 / tickets.json”“connectionName”“亚博zendesk”“头”(“关键”“内容类型”“价值”“application / json”}]“requestBody”“票”“美元的话题。”“.subject美元”“评论”“身体。”“.comment_body美元”}“requester_id美元。”“.requester_id美元”}}}}}

    当被调用时,该操作向Zendesk支持API发送一个POST请求亚博创建机票端点。请求正文包含票据的主题、正文文本和请求者id。

  6. 取代InitiateRefund具有以下自定义操作定义的占位符。在定义中,将“EXTERNAL_TARGET_URL”替换为RequestBin端点URL。

                   
    “InitiateRefund”“类型”“子::行动::Http”“属性”“名称”“InitiateRefund”“定义”“方法”“职位”“url”“EXTERNAL_TARGET_URL”“requestBody”“order_id美元。”“.order_id美元”“refund_amount美元。”“.refund_amount美元”“user_profile_id美元。”“.profile_id美元”}}}}

    当调用时,自定义操作向外部目标URL发送POST请求。请求主体包含商店订单id、退款金额和客户的配置文件id。

  7. 取代RefundRequestFlow占位符,具有以下ZIS流定义。在定义中,将“INTEGRATION”替换为您的集成键。

    流从筛选User Activity Created事件的Choice状态开始。流中的大多数状态仅为带有user_activity.type“refund_request”。

                   
    “RefundRequestFlow”“类型”“子:流”“属性”“名称”“RefundRequestFlow”“定义”“StartAt”“CheckEventSourceAndType”“州”“CheckEventSourceAndType”“类型”“选择”“选择”(“变量”“.input.activity_event.user_activity.type美元”“StringEquals”“refund_request”“下一个”“ConvertRefundAmountToNum”}]“默认”“完成”}“ConvertRefundAmountToNum”“类型”“行动”“ActionName”“子:常见的变换:金桥”“参数”“expr”“.activity_event.user_activity.properties。退款金额|号码“数据。美元”“.input美元”}“ResultPath”“.refund_amount_num美元”“下一个”“CheckRefundAmount”}“CheckRefundAmount”“类型”“选择”“选择”(“变量”“.refund_amount_num美元”“NumericLessThanEquals”One hundred.“下一个”“InitiateRefund”}]“默认”“GetUserProfile”}“GetUserProfile”“类型”“行动”“ActionName”“子:集成:行动:GetUserProfile”“参数”“profile_id美元。”“.input.activity_event.user_activity.profile_id美元”}“ResultPath”“.customer美元”“下一个”“CheckForPremiumMembership”}“CheckForPremiumMembership”“类型”“选择”“选择”(“变量”“.customer.profile.attributes.membership美元”“StringEquals”“溢价”“下一个”“InitiateRefund”}]“默认”“Create亚博ZendeskTicket”}“Create亚博ZendeskTicket”“类型”“行动”“ActionName”“子:集成:行动:CreateZendeskTicket”亚博“参数”“美元的话题。”"订单{{$.input.activity_event.user_activity.properties.order_id}}的退款请求"“comment_body美元。”“嗨,\n我请求${{$.input.activity_event.user_activity.properties。refund_amount}}refund for order {{$.input.activity_event.user_activity.properties.order_id}}."“requester_id美元。”“.input.activity_event.user_activity.user_id美元”}“下一个”“完成”}“InitiateRefund”“类型”“行动”“ActionName”“子:集成:行动:InitiateRefund”“参数”“order_id美元。”“.input.activity_event.user_activity.properties.order_id美元”“refund_amount美元。”“.input.activity_event.user_activity.properties.refund_amount美元”“profile_id美元。”“.input.activity_event.user_activity.profile_id美元”}“下一个”“完成”}“完成”“类型”“成功”}}}}}
  8. 取代RefundRequestJobSpec具有以下职位说明定义的占位符。在定义中,将“INTEGRATION”替换为您的集成键。

                   
    “RefundRequestJobSpec”“类型”“子::JobSpec”“属性”“名称”“RefundRequestJobSpec”“event_source”“阳光”“event_type””活动。UserActivityCreated”“flow_name”“子:集成:流:RefundRequestFlow”}}

    作业规范告诉ZIS在检测到User Activity Created事件时运行ZIS流。

  9. 保存my_zis_bundle.json。文件现在看起来应该是这样的:

                   
    “名称”“自定义活动事件的示例ZIS集成”“描述”“批准和发送退款请求”“zis_template_version”“2019-10-14”“亚博电脑端资源”“GetUserProfile”“类型”“子::行动::Http”“属性”“名称”“GetUserProfile”“定义”“方法”“获得”美元”的道路。”“/ api / v2 / user_profiles / {{$ .profile_id}}”“connectionName”“亚博zendesk”}}}“Create亚博ZendeskTicket”“类型”“子::行动::Http”“属性”“名称”“Create亚博ZendeskTicket”“定义”“方法”“职位”美元”的道路。”“/ api / v2 / tickets.json”“connectionName”“亚博zendesk”“头”(“关键”“内容类型”“价值”“application / json”}]“requestBody”“票”“美元的话题。”“.subject美元”“评论”“身体。”“.comment_body美元”}“requester_id美元。”“.requester_id美元”}}}}}“InitiateRefund”“类型”“子::行动::Http”“属性”“名称”“InitiateRefund”“定义”“方法”“职位”“url”“EXTERNAL_TARGET_URL”“requestBody”“order_id美元。”“.order_id美元”“refund_amount美元。”“.refund_amount美元”“user_profile_id美元。”“.profile_id美元”}}}}“RefundRequestFlow”“类型”“子:流”“属性”“名称”“RefundRequestFlow”“定义”“StartAt”“CheckEventSourceAndType”“州”“CheckEventSourceAndType”“类型”“选择”“选择”(“变量”“.input.activity_event.user_activity.type美元”“StringEquals”“refund_request”“下一个”“ConvertRefundAmountToNum”}]“默认”“完成”}“ConvertRefundAmountToNum”“类型”“行动”“ActionName”“子:常见的变换:金桥”“参数”“expr”“.activity_event.user_activity.properties。退款金额|号码“数据。美元”“.input美元”}“ResultPath”“.refund_amount_num美元”“下一个”“CheckRefundAmount”}“CheckRefundAmount”“类型”“选择”“选择”(“变量”“.refund_amount_num美元”“NumericLessThanEquals”One hundred.“下一个”“InitiateRefund”}]“默认”“GetUserProfile”}“GetUserProfile”“类型”“行动”“ActionName”“子:集成:行动:GetUserProfile”“参数”“profile_id美元。”“.input.activity_event.user_activity.profile_id美元”}“ResultPath”“.customer美元”“下一个”“CheckForPremiumMembership”}“CheckForPremiumMembership”“类型”“选择”“选择”(“变量”“.customer.profile.attributes.membership美元”“StringEquals”“溢价”“下一个”“InitiateRefund”}]“默认”“Create亚博ZendeskTicket”}“Create亚博ZendeskTicket”“类型”“行动”“ActionName”“子:集成:行动:CreateZendeskTicket”亚博“参数”“美元的话题。”"订单{{$.input.activity_event.user_activity.properties.order_id}}的退款请求"“comment_body美元。”“嗨,\n我请求${{$.input.activity_event.user_activity.properties。refund_amount}}refund for order {{$.input.activity_event.user_activity.properties.order_id}}."“requester_id美元。”“.input.activity_event.user_activity.user_id美元”}“下一个”“完成”}“InitiateRefund”“类型”“行动”“ActionName”“子:集成:行动:InitiateRefund”“参数”“order_id美元。”“.input.activity_event.user_activity.properties.order_id美元”“refund_amount美元。”“.input.activity_event.user_activity.properties.refund_amount美元”“profile_id美元。”“.input.activity_event.user_activity.profile_id美元”}“下一个”“完成”}“完成”“类型”“成功”}}}}}“RefundRequestJobSpec”“类型”“子::JobSpec”“属性”“名称”“RefundRequestJobSpec”“event_source”“阳光”“event_type””活动。UserActivityCreated”“flow_name”“子:集成:流:RefundRequestFlow”}}}}
  10. 将包上传到ZIS。

                   
    curl -X POST https://{subdomain}.亚博zendesk.com/api/services/zis/registry/{integration}/bundles \-u {email}:{password} \-H "Content-Type: application/json" \- d @my_zis_bundle.json
  11. 安装作业规范以启用集成。

                   
    curl -X POST "https://{subdomain}.亚博zendesk.com/api/services/zis/registry/job_specs/install?job_spec_name=zis:{integration}:job_spec:RefundRequestJobSpec" \密码- u {email}: {}

测试集成

要测试集成,请使用Events API为退款请求创建一个用户活动事件。然后验证集成是否启动退款或创建Zendesk票证。亚博

本教程提供了三个测试用例的步骤:

您可以使用类似的工作流来覆盖其他测试用例。

测试用例1:100美元退款

根据集成的逻辑,100美元或更少的退款请求应该向RequestBin端点URL发送请求。URL表示用于启动退款的外部API。

  1. 使用以下请求为退款请求创建用户活动事件。事件有一个refund_amount“100.00”。

                   
    curl -X POST https://{subdomain}.亚博zendesk.com/api/v2/user_profiles/events \-u {email_address}:{password} \-H "Content-Type: application/json" \- d”{"事件":{“源”:“online_order”,“类型”:“refund_request”,"属性":{“order_id”:“789”,“refund_amount”:“100.00”}},“简介”:{"name": "John Doe",“源”:“acme_store”,“类型”:“客户”,"属性":{“会员”:“基本”},“标识符”:[“类型”:“电子邮件”,“价值”:“(电子邮件保护)}]}} '
  2. 导航到RequestBin指示板。您应该看到一个JSON有效负载,其中包含订单id、退款金额和客户的配置文件id。

测试用例2:使用高级会员退款200美元

根据集成的逻辑,具有高级会员资格的客户的退款请求应该向RequestBin端点URL发送请求。无论退款金额多少,这个逻辑都适用。

  1. 使用以下请求创建用户活动事件。事件有一个refund_amount“200.00”。与事件关联的概要文件具有会员“溢价”。

                   
    curl -X POST https://{subdomain}.亚博zendesk.com/api/v2/user_profiles/events \-u {email_address}:{password} \-H "Content-Type: application/json" \- d”{"事件":{“源”:“online_order”,“类型”:“refund_request”,"属性":{“order_id”:“456”,“refund_amount”:“200.00”}},“简介”:{"name": "Jennifer Doe",“源”:“acme_store”,“类型”:“客户”,"属性":{“会员”:“溢价”},“标识符”:[“类型”:“电子邮件”,“价值”:“j(电子邮件保护)}]}} '
  2. 导航到RequestBin指示板。您应该看到一个JSON有效负载,其中包含订单id、退款金额和客户的配置文件id。

测试案例3:200美元退款,没有高级会员资格

根据集成的逻辑,退款请求在Zendesk中创建一个票证,如果:亚博

  • 退款金额超过$100 AND
  • 客户没有高级会员资格
  1. 使用以下请求创建用户活动事件。事件有一个refund_amount“200.00”。与事件关联的概要文件具有会员“基本”。

                   
    curl -X POST https://{subdomain}.亚博zendesk.com/api/v2/user_profiles/events \-u {email_address}:{password} \-H "Content-Type: application/json" \- d”{"事件":{“源”:“online_order”,“类型”:“refund_request”,"属性":{“order_id”:“123”,“refund_amount”:“200.00”}},“简介”:{"name": "Jane Doe";“源”:“acme_store”,“类型”:“客户”,"属性":{“会员”:“基本”},“标识符”:[“类型”:“电子邮件”,“价值”:“(电子邮件保护)}]}} '
  2. 要验证在Zendesk中创建的相关票证的集成,请作为请求者搜索客户的电子邮件地址。亚博

                   
    旋度https://{subdomain}.zen亚博desk.com/api/v2/search.json \-u {email}:{password} \-G——data-urlencode "query=request:(电子邮件保护)

    响应包含一个票据。机票的描述包含订单id和退款金额。

                   
    “结果”(“url”“https://example.亚博zendesk.com/api/v2/tickets/75.json”“id”75“主题”“订单123退款申请”“raw_subject”“订单123退款申请”“描述”“你好,我要求退回123号订单的200美元。”}]}

    您还可以使用Zendesk Support代理界面验证票据是否存在。亚博