我一直在尝试了解如何在营销云上使用 Journey Builder 中的 InArguments/OutArguments,但没有成功。我一直在阅读 Marketingcloud 上的文档以及 GitHub 示例,但仍然无法理解。我相信网上的很多信息都是过时的或不完整的。
这是我的 config.json:
"workflowApiVersion": "1.1",
"metaData": {
"icon": "images/icon.png",
"iconSmall": "images/iconSmall.png",
"category": "customer updates"
},
"type": "REST",
"lang": {
"en-US": {
"name": "SampleCA",
"description": "A Template for a custom Journey Builder activity",
"step1Label": "Configure Activity"
}
},
"arguments": {
"execute": {
"inArguments":[
{
"ContactKey": "{{Context.ContactKey}}"
}
],
"outArguments": [],
"url": "https://programb.herokuapp.com/execute",
"verb": "POST",
"body": "",
"header": "",
"format": "json",
"useJwt": true,
"timeout": 10000
}
},
"configurationArguments": {
"applicationExtensionKey": "6f382672-1c0f-42e1-ac02-6bec3ad0e57b",
"save": {
"url": "https://programb.herokuapp.com/save",
"verb": "POST"
},
"publish": {
"url": "https://programb.herokuapp.com/publish",
"verb": "POST"
},
"stop": {
"url": "https://programb.herokuapp.com/stop",
"verb": "POST"
},
"validate": {
"url": "https://programb.herokuapp.com/validate",
"verb": "POST"
}
},
"wizardSteps": [
{ "label": "Get User Input", "key": "step1" }
],
"userInterfaces": {
"configModal": {
"height": 400,
"width": 1000,
"fullscreen": false
}
},
"schema": {
"arguments": {
"execute": {
"inArguments": [
{
"ContactKey": {
"dataType": "ContactKey",
"isNullable": false,
"direction" : "in"
}
}
],
"outArguments": []
}
}
}
}
和我的 customActivity.js:
define([
'postmonger'
], function (
Postmonger
) {
'use strict';
var connection = new Postmonger.Session();
var token;
var payload = {};
var contactKey;
$(window).ready(function() {
connection.trigger('requestTokens');
connection.trigger('ready');
});
connection.on('clickedNext', save);
connection.on('getTokens', function( data ) {
if( data.error ) {
console.error( data.error );
} else {
tokens = data;
}
});
connection.on('initActivity', function(payload) {
console.log("INITACTIVITY INITACTIVITY INITACTIVITY INITACTIVITY INITACTIVITY ");
var hasInArguments = Boolean(
payload['arguments'] &&
payload['arguments'].execute &&
payload['arguments'].execute.inArguments &&
payload['arguments'].execute.inArguments.length > 0
);
var inArguments = hasInArguments ? payload['arguments'].execute.inArguments : {};
console.log("INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS ");
console.log(inArguments);
console.log("INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS INARGS ");
$.each(inArguments, function (index, inArgument) {
$.each(inArgument, function (key, val) {
if (key === 'contactKey') {
contactKey = val;
}
});
});
console.log(payload);
connection.trigger('updateButton', {
button: 'next',
text: 'done',
visible: true
});
console.log("INITACTIVITY INITACTIVITY INITACTIVITY INITACTIVITY INITACTIVITY ");
});
connection.on('requestedTokens', function(tokens) {
token = tokens;
});
function save() {
payload['arguments'].execute.inArguments = [{
"tokens": token,
"contactKey": contactKey
}];
payload['metaData'].isConfigured = true;
console.log(payload);
connection.trigger('updateActivity', payload);
}
});
您能否告诉我如何为每个进入我的 customActivity 的联系人获取这些 InArguments 并在我的应用程序中操作它们?
据我了解,当向“/”发出请求时,我的 app.js 会为我的 index.html 提供服务,然后启动我的 customActivity.js 脚本,该脚本使用 Postmonger 模块来回复诸如 Init/Ready 之类的事件。对此的任何澄清将不胜感激。
谢谢你。