管理員可以配置Webhook,以便通過Webhook對接您的一方系統(如CRM)或三方系統,實現在Quick Audience控制臺向用戶發送優惠券等。觸達營銷、自動化營銷模塊均支持Webhook。
操作流程如下:
針對您的一方系統或三方系統完成Webhook接入開發,請參見Webhook接入文檔。
若Webhook參數需要使用字符型參數調用的方式,包括采用常量或通過接口傳參,管理員需要在新建Webhook前配置參數,請參見參數管理。
管理員新建Webhook,對接一方系統或三方系統,請參見新建Webhook。
管理員測試發送,確保能發送成功,請參見測試發送。
管理員向需要使用Webhook的非管理員授予Webhook的使用權限,請參見授權。
管理員、已授權成員在觸達營銷模塊創建Webhook任務,或在自動化營銷模塊配置Webhook組件,調用一方系統或三方系統進行營銷發送,具體操作,請分別參見創建Webhook任務、數據配置-Webhook組件。
新建Webhook
操作步驟:
選擇工作空間>配置管理>營銷配置>Webhook管理,進入Webhook列表。
單擊右上角新建Webhook。
在彈窗中配置參數,如下表所示。
參數
說明
Webhook名稱
輸入Webhook名稱。
鑒權方式
選擇鑒權方式:
無:不進行鑒權。
密鑰:通過驗證密鑰進行鑒權,需要在下方輸入密鑰。
請求地址
輸入要接收消息推送的接口地址,必須是以http或https開頭的完整地址。
建議使用HTTPS協議,以提高信息傳輸的安全性。
發送ID類型
選擇允許發送的ID類型,可多選。但在創建任務時,每個任務僅可選擇發送一種ID。
支持選擇ID類型管理中所有已啟用的ID類型。
Webhook參數
您可以定義Webhook參數,在使用該Webhook創建不同的營銷任務時,可以靈活定義這些參數的值。例如:一方系統或三方系統設置的發送內容為“在{address}進行折扣活動”,{address}即為一個參數,在創建營銷任務時,需要指定為具體內容。
參數名稱
顯示名稱:顯示在營銷任務創建頁面上的參數名稱。
參數類型:參數的數據類型,支持字符型、數值型、文本型、日期型、字符型(參數調用)。
對于字符型(參數調用),需要選擇參數使用的常量或接口,常量或接口需要事先配置,請參見參數管理。
是否必填:參數是否必傳
單擊添加模板參數,可以增加一個Webhook參數。
是否開啟回執設置
選擇是否開啟回執設置,使一方系統或三方系統能夠通過上報回執將發送結果返回本空間的分析源,顯示在營銷任務詳情頁面,或用于自動化營銷的結果多分支組件。
若開啟,您需要設置:
數據回收周期:超過該周期后,Quick Audience將不再接收發送結果。
狀態code、狀態值:回執中,狀態code為發送結果代碼,如:200;狀態值為對應的發送結果,如:成功。
狀態code、狀態值可以有多對,單擊新增狀態,可以增加一對。
單擊消息格式預覽,下方將根據已配置的參數展示HTTP Post請求的消息體格式。詳細說明,請參見Webhook接入文檔。
單擊確定,完成配置。
測試發送
使用Webhook進行營銷前,您需要測試發送,確保其可用性。
您也可以在創建營銷任務時測試發送,請參見創建Webhook任務、數據配置-Webhook組件。
操作步驟:
單擊圖標。
在彈窗中選擇要測試發送的ID類型,輸入測試ID、測試Webhook參數值。
說明一次僅能測試一種ID類型。測試營銷任務需要發送的ID類型即可。
單擊確定,系統將通過Webhook調用一方系統或三方系統向測試ID發送消息。
彈窗將顯示測試發送是否成功。
測試發送成功:請檢查一方系統或三方系統是否收到了Webhook請求,測試ID是否收到消息。若未收到,請單擊彈窗中的下載日志,排查原因。
測試發送失敗:請單擊彈窗中的下載日志,排查原因。
同時,最近一次的測試發送信息也將顯示在Webhook列表,如下圖所示。
授權
管理員以外的空間成員,若需要使用Webhook創建營銷任務,必須加入含“用戶營銷-觸達營銷-Webhook”權限的角色,并由管理員授予該Webhook的使用權限。
授權操作步驟:
單擊>授權,進入授權頁面,如下圖所示。
選擇授權方式:支持按成員和按成員組。
說明成員組可單擊頁面右上角,選擇空間管理>空間成員組進行添加。兩種授權方式相互排斥,僅可選其中一種進行授權。若已按一種方式授權,再次授權時選擇另一種方式,則使用舊授權方式的授權將解除,僅生效使用新授權方式的授權。
下方顯示已授權成員賬號/成員組,以及授權有效期。
解除授權:單擊賬號/成員組對應的移除,即可解除對該賬號/成員組的授權,立即生效。
授權:選擇要授權的賬號/成員組,可多選,設置有效期,單擊確定完成授權。
關閉/開啟
Webhook創建后,默認為開啟狀態,此時可測試、使用Webhook;若需要編輯、刪除Webhook,必須先關閉Webhook。
通過右側的開關,您可以關閉、開啟Webhook。
編輯
在關閉Webhook后,您可以對其進行編輯。
單擊"編輯"按鈕,進入編輯界面,后續操作與創建時相同。
不支持編輯開啟狀態的Webhook,請先關閉。
若編輯前已開啟回執設置,則不支持修改或刪除已配置的狀態code、狀態值。
復制
單擊>復制,進入新的配置頁面,已默認填寫與原Webhook相同的配置項,支持修改,單擊確定完成復制。
復制生成的新Webhook,默認為關閉狀態,需要手動開啟,才能測試、使用。
刪除
在關閉Webhook后,若該Webhook未被用于任何營銷任務,您可以刪除該Webhook。
單擊>刪除,確認后即刪除該Webhook。
參數管理
若Webhook參數需要使用字符型參數調用的方式,包括采用常量或通過接口傳參,管理員需要在新建Webhook前配置參數。
接口型:通過接口傳遞參數值。在創建Webhook任務時,Quick Audience將讀取接口內的所有參數值,供創建時選擇。
接口開發規范,請參見Webhook接口參數接入文檔。
常量型:參數值固定。可以設置多個固定參數值,供創建Webhook任務時選擇。
創建參數
選擇工作空間>配置管理>營銷配置>Webhook管理>Webhook參數管理,進入Webhook參數列表。
單擊右上角新建Webhook參數。
在彈窗中配置參數,常量型、接口型參數的配置方法不同:
接口型:
參數
說明
參數名稱
輸入接口名稱。
參數類型
選擇接口型。
接口地址
輸入傳遞參數的接口地址。
參數描述
輸入參數描述。
鑒權方式
選擇鑒權方式:
無:不進行鑒權。
密鑰:通過驗證密鑰進行鑒權,需要在下方輸入密鑰。
是否關聯其他參數
選擇關聯參數:
否:不關聯
是:
參數值設置(支持添加多個,最多添加20個):
參數名稱:參數名稱必須為英文,支持輸入英文、數字、下劃線,且不能為空,長度不超過32個字符
顯示名稱:不超過32個字符
參數值:
下拉選項,支持選項:關聯參數選擇 、手動輸入
關聯參數選擇
下拉全量透出參數管理下的參數
如接口型參數需要設置級聯關系,接口里需包含參數之間級聯關系
手動輸入:選擇手動輸入時,支持手動輸入多個參數值
若需一個參數傳遞多個值,可以在一個參數值里面填寫,多個值之間用三方約定的分隔符分開,接收到后自己分隔
常量型:
參數
說明
參數名稱
輸入接口名稱。
參數類型
選擇常量型。
參數描述
輸入參數描述。
是否關聯其他參數
選擇關聯參數:
否:參數值設置(支持添加多個,最多添加20個)
參數值:至少配置一個模板參數,參數名稱必須為英文,且不能為空,長度不超過32個字符
顯示名稱:不超過32個字符
是:參數值及關聯參數設置(支持添加多個,最多添加20個)
單擊確定,完成配置。
管理參數
參數列表提供以下操作按鈕:
詳情:單擊后可查看參數詳情。
編輯:單擊后可編輯參數,配置方法與創建時相同。
刪除:單擊后,在彈窗中確認刪除,即可刪除該參數。僅支持刪除當前未被使用的參數。
Webhook接入文檔
Webhook接入開發包括以下幾個方面,請參考我們給出的消息格式和樣例進行開發。
HTTP Endpoint Server
為了與Quick Audience的Webhook對接,您需要開發一個HTTP Server。Quick Audience將發起Post請求,請求超時時間為10秒。Quick Audience發起的Post請求和接入方回執請求約定如下通用參數,為必傳項。
URL參數 | 含義 | 示例 |
timestamp | 秒級時間戳 | 1631865523 |
nonce | 32位隨機字符串 | 2e6eceb5737b473284c930c8ef79090e |
請求URL示例:
{Webhook配置的url}?timestamp=1631865523&nonce=2e6eceb5737b473284c930c8ef79090e
Header | 含義 | 說明 |
X-QA-Hmac-Signature | 鑒權簽名 | 開啟鑒權時使用,鑒權方式見下文。 未開啟鑒權時,該Header填空字符串""。 |
鑒權方式
通過密鑰進行鑒權。Webhook配置時開啟鑒權,用戶填寫密鑰。
Quick Audience內部會根據用戶填寫的密鑰與URL請求參數timestamp和nonce進行HmacSHA256Hex簽名并生成signature,并將此signature通過Request Header傳遞過去來做鑒權。您的服務接受到請求后,同樣根據URL參數與Webhook通道配置的密鑰進行HmacSHA256Hex算法加密。如果計算的值與從Request Header中傳過來的signature相同,則可以確定是此請求是從Quick Audience中發送的。上報回執時同理。
參數 | 含義 | 示例 |
key | Webhook配置的密鑰 | 123456789 |
簽名算法示例:
public String makeSignature(String key, String timestamp, String nonce) {
String str = generateStr(key, timestamp, nonce);
return HmacUtils.hmacSha256Hex(key, str.replaceAll("\\s+", ""));
}
/**
* 簽名待處理的字符串拼接
*/
public static String generateStr(String key, String timestamp, String nonce){
String[] array = new String[] { key, timestamp, nonce};
StringBuffer sb = new StringBuffer();
// 字符串排序
Arrays.sort(array);
for (int i = 0; i < 3; i++) {
sb.append(array[i]);
}
return sb.toString();
}
Webhook Request
請求為Quick Audience向接入方發起的HTTP Post請求。Request Body是單用戶的觸發請求信息。
字段名 | 字段類型 | 說明 |
user_profile | Map<String,String> | KV類型,傳遞用戶ID。 target_type的value值表示ID類型,支持ID類型見下文,為大寫;target_id的value值表示具體目標ID值。 |
params | Map<String,Object> | KV類型,傳遞Webhook配置時指定的參數。 對于任何類型的參數(含參數調用),在發送請求時,將所有的參數字段全部轉為字符串進行處理。 當文本類型中有變量時,變量值將直接填入params參數中,請參見下面的示例。 |
callback_params | Map<String,String> | 為Quick Audience請求參數,包含任務ID、組件ID等信息,需在上報回執時原樣帶回。 |
process_info | Map<String,String> | 流程信息中的部分實例信息,因為這些信息對于不同的用戶會不同。 |
Post Header信息:
Header信息讀取后需要通過java.net.URLDecoder#decode(java.lang.String, java.lang.String)
解碼,編碼方式為UTF-8。可能包含以下信息:
processId=自動化營銷活動ID
processName=自動化營銷活動名稱
processSchedulerId=自動化營銷活動每次周期調度的ID
processSchedulerName=自動化營銷活動每次周期調度的名稱:自動化營銷活動ID+周期的時間拼接字符串
processSchedulerStartTime=自動化營銷活動周期開始時間,時間戳格式
processNodeId=自動化營銷活動節點ID(每個周期的節點ID都是一樣的)
processNodeName=自動化營銷活動節點名稱(每個周期的節點ID都是一樣的)
activityId=關聯子活動的主活動ID
activityName=關聯子活動的主活動名稱
subActivityId=關聯子活動ID
subActivityName=關聯子活動名稱
jobId=廢棄:等于processId,推薦用processId
jobName=廢棄:等于processName,推薦用processName
nodeId=廢棄:等于processNodeId,推薦用processNodeId
nodeName=廢棄:等于processNodeName,推薦用processNodeName
taskStartTimestamp=廢棄:等于processSchedulerStartTime,是時間戳格式,推薦用processSchedulerStartTime
processInstanceId=廢棄:兼容老版本:等于processSchedulerId
processInstanceName=廢棄:兼容老版本:等于processSchedulerName
processInstanceStartTime=廢棄:兼容老版本:等于processSchedulerStartTime
taskId=無此字段,等于processNodeInstanceId,無法兼容
processNodeInstanceId=無此字段,無法兼容
processNodeInstanceStartTime=無此字段,無法兼容
nodeStartTimestamp=無此字段,等于processNodeInstanceStartTime,無法兼容
Post Body結構示例(單個用戶示例,每批一般1~100個用戶):
[
{
"user_profile": {
"target_type": "OPEN_ID",
"target_id": "1917810",
"customer_id": "用戶的唯一ID,如果上報事件需要使用這個ID"
},
"params": {
"define_item1": "優惠券ID",
"define_item2": "優惠券內容示例,用戶所在的地址是北京" //北京是變量${city}填入的變量值
},
"callback_params": {
"task_id": "廢棄",
"Webhook_id": "13312313",
"send_time": "1625037472000",
"nodeId": "節點Id",
"instanceId": "實例Id",
"actionId": "執行動作實例Id",
"customerId": "用戶Id,customerId",
},
"process_info": {
"processInstanceId": "新版:自動化營銷活動周期中,每個用戶的自動化營銷活動實例ID",
"processInstanceStartTime": "新版:自動化營銷活動周期中,每個用戶的自動化營銷活動實例開始時間,時間戳格式",
"processNodeInstanceId": "新版:自動化營銷活動節點實例ID(每次不同)",
"processNodeInstanceStartTime": "新版:自動化營銷活動周期中,每個用戶的自動化營銷活動的節點實例開始時間,時間戳格式",
"groupId":"新版:分組ID",
"groupName":"新版:分組名稱"
}
}
]
Quick Audience空間支持的用戶ID類型包括本空間的ID類型管理頁面中所有已啟用狀態的ID,請在代碼中使用ID類型編碼代表對應的ID。
系統預置ID的ID類型編碼,請查閱系統預置ID列表。
自定義ID的ID類型編碼,請單擊列表中自定義ID的編輯按鈕,查看ID類型編碼。
Quick Audience儲存的ID加密方式支持原文/AES/MD5/SHA256,向一方系統或三方系統發送ID前會對已AES加密的ID進行解密,因此Quick Audience向一方系統或三方系統發送的ID加密方式可能是原文/MD5/SHA256,一方系統或三方系統可以根據ID實際使用到的加密方式決定是否支持MD5/SHA256解密。
接入方收到請求后,向Quick Audience返回響應消息。
響應體格式:
{
"code":"OK", //請求狀態碼:返回OK代表請求成功,必須為大寫;返回其他為錯誤碼,接入方自定義。
"message":"", //狀態碼描述,非必填。
}
回執上報
接入方執行營銷任務后,向Quick Audience上報回執,反饋營銷消息的發送結果。
HTTP請求URL:
http://${region域名}/restapi/marketing2/webhook/receiveWebHookCallBack?timestamp=1631865523&nonce=2e6eceb5737b473284c930c8ef79090e
Post Body:為List,多個用戶的回執信息合并在一起。
字段 | 類型 | 說明 |
status | String | 結果狀態,即webhook配置中定義的狀態code,如200。 |
cst_id | String | 觸達的用戶ID,為user_profile.customer_id。 |
send_time | String | 毫秒級時間戳。 |
callback_params | Map<String,String> | webhook請求時攜帶的callback_params,原樣帶回,每個用戶一個 |
回執消息示例:
[
//每個用戶一個,一次可上報多個,最好100個以內
{
"status": "回執狀態",
"cst_id": "客戶ID,customerId",
"send_time": "回執發送時間,時間戳格式",
"callback_params": {
"參數原樣帶回": "將調用時的參數原樣帶回"
}
}
]
回執返回結果:
成功:{"code":200, "message":"成功"}
全部失敗:{"code":99999, "message":"每一條的錯誤信息json格式"}
部分失敗:{"code":99998, "message":"每一條的錯誤信息json格式"}
FAQ
Webhook參數、變量、常量、接口的區別是什么?
答:Webhook參數有多種類型,它們的區別和用法如下圖所示。
其中:
常量、接口是字符型(參數調用)參數賦值的兩種方式。
變量是文本型參數中插入的,可隨用戶而變的內容。