用node.js實現在企業微信設定成員個性化歡迎語
目標:
在企業微信上只能設定統一的新客戶歡迎語,因此我們透過API來實現為對每個成員設定個性化歡迎語。
實現環境:
白碼低程式碼平臺 (該平臺提供企業微信API,可直接呼叫,減少前期配置除錯工作)
平臺語言:
使用 node.js開發
準備工作:
-
準備一個 企業微信管理員賬號
-
獲取成員資訊(主要是 userid,可參考我以往文章:Node.JS呼叫企業微信API:成員的增刪查改)
請結合以下內容閱讀:
-
企業微信上傳臨時素材API:https://work.weixin.qq.com/api/doc/90000/90135/90253
-
企業微信傳送新客戶歡迎語API:https://work.weixin.qq.com/api/doc/90000/90135/92137
-
企業微信新增客戶回撥事件:https://work.weixin.qq.com/api/doc/90000/90135/92130
-
白碼使用的企業微信API庫:
實現步驟:
1、建立“新客戶歡迎語”資料表以儲存成員的歡迎語資料。
2、建立上傳臨時素材的雲函式。
配置API引數:
程式碼:
async function run($input, $output, $modules = modules) { let image_url = $input.image_url; let mediaName = new Date().getTime() + ".png"; //上傳臨時素材 let media = await modules.wxworkApi.uploadMediaByUrl(image_url, "image", mediaName); //輸出 $output.media_id = media.media_id; $output.created_at = media.created_at; }
3、建立新建歡迎語功能(根據需求自行構建),並呼叫“上傳臨時素材”雲函式:
4、建立傳送新客戶歡迎語云函式,並建立一個功能呼叫它。
配置:
程式碼:
async function run($input, $output, $modules = modules) { let commonWelcomeQuery = await modules.data.queryData("5f4647d829fa640a919d57ff", { "5f464815e233c00a9094345e": "通用" }); if (commonWelcomeQuery.length > 0) { //初始化為通用歡迎語 let welcome = commonWelcomeQuery[0]; //根據userid查詢成員的歡迎語 let welcomeQuery = await modules.data.queryData("5f4647d829fa640a919d57ff", { "5f46482d29fa640a919d5801": $input.userid }); welcome = welcomeQuery.length > 0 ? welcomeQuery[0] : welcome; let nowTime = new Date().getTime(); //歡迎語初始化為傳送文字內容 let msgData = { welcome_code: $input.welcomeCode, text: { content: welcome["5f46483929fa640a919d5802"] } }; let create_at = ""; let isExpired = false; let media_id = ""; switch (welcome["5f464af329fa640a919d5809"]) {//歡迎語型別 case "圖片": create_at = new Number(welcome["5f464de7e233c00a9094346e"] + "000"); isExpired = (nowTime - create_at) > 3 * 24 * 60 * 60 * 1000;//素材超過3天失效 media_id = welcome["5f464dc0e233c00a9094346d"]; if (isExpired) { //重新上傳圖片 let mediaName = new Date().getTime() + ".png"; let getMediaId = await modules.wxworkApi.uploadMediaByUrl(welcome["5f464dc0e233c00a9094346d"], "image", mediaName); media_id = getMediaId.media_id; //更新圖片素材 let form = { "5f464dc0e233c00a9094346d": getMediaId.media_id, "5f464de7e233c00a9094346e": getMediaId.created_at } modules.data.updateData("5f4647d829fa640a919d57ff", welcome._id, form); } //文字+圖片 msgData = { welcome_code: $input.welcomeCode, text: { content: welcome["5f46483929fa640a919d5802"] }, image: { media_id: media_id } }; break; case "圖文": //文字+圖文 msgData = { welcome_code: $input.welcomeCode, text: { content: welcome["5f46483929fa640a919d5802"] }, link: { title: welcome["5f46486329fa640a919d5804"], picurl: welcome["5f46487029fa640a919d5805"], desc: welcome["5f464878e233c00a90943460"], url: welcome["5f464881e233c00a90943461"] } }; break; case "小程式": create_at = new Number(welcome["5f464e10e233c00a90943472"] + "000"); isExpired = (nowTime - create_at) > 3 * 24 * 60 * 60 * 1000;//臨時素材超過3天失效 media_id = welcome["5f464e06e233c00a90943471"]; if (isExpired) { //重新上傳封面 let mediaName = new Date().getTime() + ".png"; let getMediaId = await modules.wxworkApi.uploadMediaByUrl(welcome["5f4722b4e233c00a90943587"], "image", mediaName); media_id = getMediaId.media_id; //更新小程式封面素材 let form = { "5f464e06e233c00a90943471": getMediaId.media_id, "5f464e10e233c00a90943472": getMediaId.created_at } modules.data.updateData("5f4647d829fa640a919d57ff", welcome._id, form) } //文字+小程式 msgData = { welcome_code: $input.welcomeCode, text: { content: welcome["5f46483929fa640a919d5802"] }, miniprogram: { title: welcome["5f464891e233c00a90943462"], pic_media_id: media_id, appid: welcome["5f4648a4e233c00a90943463"], page: welcome["5f4648afe233c00a90943464"] } }; break; } //傳送歡迎語 modules.wxworkApi.request( { method: 'post', url: 'externalcontact/send_welcome_msg', data: msgData } ) } }
功能:
5、設定回撥事件,在成員新增外部聯絡人時傳送歡迎語(回撥事件的具體實現過程可參考:Node.JS呼叫企業微信API:自建應用的回撥事件)
程式碼:
async function hook($req, $resp, $modules = modules) { //get 請求用於驗證有效性 if ($req.method == "GET") { /** * 企業收到訊息後,需要作如下處理: * 1、對msg_signature進行校驗 * 2、解密Encrypt,得到明文的訊息結構體(訊息結構體後面章節會詳說) * 3、如果需要被動回覆訊息,構造被動響應包 * 4、正確響應本次請求 * 以上1~2步驟可以直接使用解密函式一步到位。 * 3步驟其實包含加密被動回覆訊息、生成新簽名、構造被動響應包三個步驟,可以直接使用加密函式一步到位。 */ $resp.body = await modules.wxworkApi.getVerifyMsg($req);//處理已封裝,可直接呼叫 } else if ($req.method == "POST") { //無法保證在五秒內處理完成,先回復(企業微信伺服器在五秒內收不到響應會斷掉連線) $resp.body = "success"; //處理 let handle = async () => { //將資料轉換成json let data = await modules.wxworkApi.getMsgData($req); if (data.Event == "change_external_contact" && data.ChangeType == "add_external_contact") {/**新增客戶事件*/ //呼叫功能,傳送歡迎語 modules.program.exec( "5f4735ef00d5f969b43ef012",//功能follow { "5f47360000d5f969b43ef014": {//輸入引數步驟 "field_1598502473677": data.Userid,//userid "field_1598502477417": data.WelcomeCode//welcome_code } } ); handle() } } } }
至此已實現成員個性化歡迎語的功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69981626/viewspace-2717178/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 企業微信入群歡迎語如何設定
- 企業微信客戶聯絡功能教程:如何設定歡迎語
- 企業微信獲客準備,先設定打招呼歡迎語吧!
- Node.JS呼叫企業微信API:成員的增刪查改Node.jsAPI
- 企業微信app怎麼設定英文語言? 企業微信app切換到英文語言的教程APP
- @dailai,歡迎成為Apache SeaTunnel Committer一員!AIApacheMIT
- 個性化企業宣傳片實現高效推廣
- 《Node.js設計模式》歡迎來到Node.js平臺Node.js設計模式
- Java現在還受歡迎嗎?Java
- 企業微信快捷回覆如何設定呢?
- 個性化emacs設定Mac
- ASP.NET實現企業微信接入應用實現身份認證ASP.NET
- 移動OA系統更受企業歡迎
- 個性化定製企業郵件域名的解決方案
- eMarketer:微信是中國最受歡迎的移動應用
- SAP GUI個性化設定GUI
- 微信企業號支付個人php實現PHP
- 揭祕Node.js深受歡迎的原因Node.js
- Node.JS呼叫企業微信API:自建應用的回撥事件Node.jsAPI事件
- 定製龍頭索菲亞養成記:專業化、規模化、個性化
- 為什麼Go語言設計受到歡迎?Go
- 請停止Node.js在企業應用中爭鬥Node.js
- 企業微信行銷工具SCRM幫助商家突破窘境,實現高效成長
- 多樣化、個性化的生產模式成常態,企業該如何應對?模式
- win10個性化設定方法_怎麼使用win10的個性化設定Win10
- C#中初始化視窗或歡迎視窗實現C#
- Zalo成為越南最受歡迎的訊息應用程式
- 實現企業網路現代化的5個步驟
- 一個 15 年 SAP ABAP 開發人員分享的 SAPGUI 一些個性化設定和實用小技巧試讀版GUI
- 個性化資料夾設定工具
- 企業個性化需求如何滿足?低程式碼為你量身定製
- iPhone7受歡迎的原因?(蘋果企業開發者賬號)iPhone蘋果
- 企業微信整合openai實現ChatGPT機器人OpenAIChatGPT機器人
- TIOBE:2020年11月最受歡迎程式語言排行榜 Python超越Java成第二最受歡迎程式語言PythonJava
- Node.js深受歡迎的六大原因Node.js
- 韓國版“微信”Kakao靠全員加持創業感實現扁平化創業
- 愛奇藝元件化設計在會員業務的應用和實踐元件化
- 恭喜社群迎來新PMC成員!