企業微信API:按鈕互動型通知+資料回撥
效果描述:
系統通過api與企業微信進行對接,可實現系統資料與企業微信上進行資料互動。
本次教程在白碼低程式碼開發平臺以訂單的提交效果做示例。
效果演示:
稽核通過:
稽核拒絕:
效果實現:
- 首先需要系統整合企業微信,按照提示進行。
2.整合之後,需要在系統上做出系統使用者與企業微訊號進行繫結的效果,本次示例不再進行說明,繫結企業微信id教程:
3.在API對接模組中,選擇企業微信API(第三方)進行新增企業微信請求API,新增完後進行引數的配置。
新建API:
引數配置:
API請求程式碼示例:
async function run($input, $output, $modules = modules) { /**傳送應用文字訊息 * 官方API: * 錯誤碼查詢工具:https://open.work.weixin.qq.com/devtool/query?e= * * touser、toparty、totag不能同時為空 */ const wxworkThirdApi = $modules.wxworkThirdApi; let agentid = await wxworkThirdApi.getAgentId(); let touser = $input.touser; let title = $input.title;//任務標題 let sub_title_text = $input.sub_title_text; let task_id = $input.task_id; let data = { touser: touser, // "toparty": // "totag": msgtype: "template_card", agentid:agentid, template_card: { card_type: "button_interaction", main_title: { title: title, }, sub_title_text: sub_title_text, task_id: task_id, button_list: [ { text: "拒絕", style: 3, key: "reject" }, { text: "通過", style: 1, key: "approve" } ] }, }; //傳送 let task_card_message = await wxworkThirdApi.request({ method: "post", url: "message/send", data }); /** * 如果部分接收人無許可權或不存在,傳送仍然執行,但會返回無效的部分(即invaliduser或invalidparty或invalidtag),常見的原因是接收人不在應用的可見範圍內。 * 如果全部接收人無許可權或不存在,則本次呼叫返回失敗,errcode為81013。 * 返回包中的userid,不區分大小寫,統一轉為小寫 */ $output.request= data; $output.res = task_card_message.response_code; }
4.在上面的基礎上,再新建一個API,並確保該api為開啟狀態。用於接收到回撥資料後,更新推送的互動訊息按鈕狀態。
API請求程式碼示例:
async function run($input, $output, $modules = modules) { const wxworkThirdApi = $modules.wxworkThirdApi; let agentid = await wxworkThirdApi.getAgentId(); let data = { //userids: [$input.userids], atall:1,//更新整個任務接收人員,0為不更新,1為更新全部 agentid, task_id: $input.task_id, response_code: $input.responseCode, button: { replace_name: $input.replace_name, } }; let res = await wxworkThirdApi.request({ method: "post", url: "message/update_template_card", data }); $output.request = data; $output.res = res; }
5.訂單的資料表中,需要加上兩個欄位,用於存放該訂單請求的對應請求task_id和response_code。其中task_id為傳送API請求的必須引數,這邊建議可直接用系統的訂單資料id來做task_id。新建一個“傳送互動訊息”功能,傳遞必要的引數。後面在訂單新增的時候呼叫該功能。
資料處理步驟:
程式碼參照:
async function runProcess($model = model, $plugin = plugin, $params = params) { let list = $params.list; let order = $params.order; let user = $params.user; let cust = order["_612f0388a7b86f0d632c6ccc"]; let course = order["_612f0388a7b86f0d632c6ccd"]; let total = order["612f0388a7b86f0d632c6cce"];//商品價格 let preferential_amount = order["612f0388a7b86f0d632c6ccf"];//優惠金額 let final_amount = order["612f0388a7b86f0d632c6cd0"];//最終金額 let date = $plugin.moment().format("YYYY-MM-DD") let time = new Date().getTime();//當前時間戳 let wxworkid = list.map(id => id["612f49359025b63cac3102c4"]) //獲取到要接收到訊息的使用者企業微信idList let idList = wxworkid.filter(function (id) {//企業微信id去空值 return id != null }) let newidList = idList.join("|"); let sub_title_text = `客戶:${cust} \n課程包:${course}\n商品價格:${total}\n優惠金額:${preferential_amount}\n最終金額:${final_amount}\n建立日期:${date}` $model.output["sub_title_text"] = sub_title_text; $model.output["wxworkid"] = newidList $model.output["task_id"] = `DD_${order._id}_${time}` $model.output["title"] = `${user}的訂單申請` }
該功能做好後,在新增訂單功能中,呼叫本功能。
呼叫步驟示例:
示例程式碼:
async function runProcess($model = model,$plugin = plugin,$params = params){ await $plugin.program.exec("6141623a841ce71ef89fa745",{//呼叫傳送互動型訊息通知功能,功能id "61416240e87b7e1ee12f4a6e":$params.order //呼叫傳送互動型訊息通知功能的選擇訂單步驟id }) }
6.新建一個“訂單稽核”功能,用於企業微信互動訊息稽核結果回撥,更新該訊息的按鈕狀態、訂單的稽核狀態。
7.新增一個webhook並確保該api為開啟狀態,用於接收任務推送後審批結果回撥,並進行處理。
資料回撥示例程式碼:
async function hook($input = {}, $output = {}, $modules = modules) { //通訊錄回撥: //外部聯絡回撥: //OA審批迴調: //get 請求用於驗證有效性 //將資料解密並轉換成json let data = $input; if (data.Event == "change_contact" && data.ChangeType == "create_party") { //TODO 處理新增部門事件 } else if ( data.Event == "change_contact" && data.ChangeType == "update_party" ) { //TODO 處理修改部門事件 } else if ( data.Event == "change_contact" && data.ChangeType == "delete_party" ) { //TODO 處理刪除部門事件 } else if ( data.Event == "change_contact" && data.ChangeType == "create_user" ) { //TODO 處理新增成員事件 } else if ( data.Event == "change_contact" && data.ChangeType == "update_user" ) { //TODO 處理修改成員事件 } else if ( data.Event == "change_contact" && data.ChangeType == "delete_user" ) { //TODO 處理刪除成員事件 } else if ( data.Event == "change_external_contact" && data.ChangeType == "add_external_contact" ) { //TODO 處理新增外部聯絡人事件 } else if ( data.Event == "change_external_contact" && data.ChangeType == "edit_external_contact" ) { //TODO 處理編輯外部聯絡人備註標籤資訊事件 } else if ( data.Event == "change_external_contact" && data.ChangeType == "del_external_contact" ) { //TODO 處理刪除外部聯絡人事件 } else if (data.Event == "template_card_event") { let task_id = data.TaskId;//任務id let btn_key = data.EventKey;//點選的按鈕key,approve是通過,reject是拒絕 let responseCode = data.ResponseCode;//用於呼叫更新卡片介面的ResponseCode,24小時內有效,且只能使用一次 let resultMap = { "approve": "稽核通過", "reject": "已拒絕" }; let result = resultMap[btn_key];//稽核結果 let order = await $modules.data.queryData("612f00448a88c8689a368ff3", {//查詢訂單表,訂單資料表id "61416c3935e1c21ee7a84ef0": task_id//按訂單的task_id查詢對應的訂單資料,task_id的欄位屬性id }) if (order.length > 0 && order[0]["612f0388a7b86f0d632c6ccb"] == "稽核中") {//訂單狀態為“稽核中”的訂單才進行處理 await $modules.program.exec("61416e3f841ce71ef89fce6c", {//呼叫訂單稽核功能,對應的功能id "61416e3f841ce71ef89fce6f": order[0], //選擇訂單步驟id "61416ea36f69881edf91a9d8": { //互動responseCode步驟的步驟id, "field_1631678152117": responseCode ,//該步驟下的responseCode屬性id }, "61416e3f841ce71ef89fce70": { //互動稽核意見步驟id, "field_1630903285232": result //該步驟下的意見屬性id } }) } } }
至此完成這個流程的效果。
注: 企業微信互動型通知API返回的 response_code 24小時內有效,且只能呼叫一次介面。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69998487/viewspace-2842530/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .NET Core 企業微信回撥配置
- 【詳細、開箱即用】.NET企業微信回撥配置(資料回撥URL和指令回撥URL驗證)
- 企業微信工作臺新增功能按鈕
- Node.JS呼叫企業微信API:自建應用的回撥事件Node.jsAPI事件
- golang實現企業微信API,以第三方服務商角度整理的API,支援手動生成企業微信新API或新回撥程式碼GolangAPI
- Python實現微信電腦版微信支付收款監聽及支付回撥通知Python
- 微信商戶 API 企業付款!API
- 企業微信API使用基本教程API
- 基於Guava API實現非同步通知和事件回撥GuavaAPI非同步事件
- 【Oculus Interaction SDK】(六)實體按鈕 && 按壓互動
- 企業微信:2018年智慧企業資料包告
- 建議收藏:Axure互動常用按鈕組
- CustomPainter——微信拍視訊按鈕效果實現AI
- 微信小程式API互動的自定義封裝微信小程式API封裝
- 如何在鬆弛中建立互動式按鈕
- 微博回撥介面
- 微信小程式避免按鈕重複觸發事件微信小程式事件
- 企業微信PC版hook原始碼api介面Hook原始碼API
- Laravel 自定義通知頻道,至 企業微信機器人Laravel機器人
- Android 微信分享後留在微信,沒有回撥的問題解決方案Android
- 企業微信助力重慶稅務打造“稅企互動渠道”,亮相2021智博會
- 關於Yii2 微信支付回撥地址處理
- ASP.NET CORE微信支付回撥示例程式碼ASP.NET
- 【HTC-VIVE】15-ButtonHints:UI的按鈕的互動UI
- 接入企業微信
- 分析微信(iOS 版)定製導航欄按鈕的思路iOS
- 微信域名檢測後如何遮蔽投訴按鈕原始碼原始碼
- pc企業微信hook介面,企業微信行銷軟體Hook
- 企業微信sdk呼叫,企業微信好友收發訊息
- 企業微信如何管理微信客戶
- 企業微信:已有數百萬企業,用企業微信為微信裡2.5億使用者提供服務
- Spring Security整合企業微信的掃碼登入,企微的API震驚到我了SpringAPI
- 微信小程式學習總結02:封裝api請求(處理非同步api回撥地獄的一種方案)微信小程式封裝API非同步
- Node.JS呼叫企業微信API:生成渠道二維碼Node.jsAPI
- 淺析微信支付:申請退款、退款回撥介面、查詢退款
- 使用 Python 來自動回微信Python
- Fastadmin fast.api.open回撥函式ASTAPI函式
- (資料科學學習手札104)Python+Dash快速web應用開發——回撥互動篇(上)資料科學PythonWeb