好久沒更新啦!目前我正在通過白碼低代碼開發平台開發一個crm系統,主要用于管理c端客戶,最近就想做一個群發消息功能,因為客戶是在企業微信上和消費者直接交流的,偶爾還會拉個群,在白碼平台上可通過API對接使用企業微信官網的接口實作群發消息功能,正好,平台也提供了封裝好的企業微信API,直接就能調用了,如果需要通過第三方應用對接企業微信API,
就需要現在企業微信背景建立一個應用,但平台已經提供了自動內建的功能,內建後就可以直接使用平台提供的第三方類型企業微信API。
聽說白碼出了企業微信CRM,感興趣的朋友可以去看看。下面進入正題。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB9EMNRlT1EkeOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2AjMwMDOzkTMzIDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
目标
在crm上實作群發消息功能(企業微信)
前期準備
①建立群發消息的資料表
其中msgid為調用API傳回的消息id,可用于查詢群發結果(後續再做這個功能);
②根據API所需參數,外部聯系人id和成員id分别作為群發對象和發送成員,是以需要将成員id儲存到使用者資料表的一個字段作為綁定關系,同理,将外部聯系人id儲存到聯系人資料表中,可以通過API擷取到指定成員的所有外部聯系人id,成員id可直接在企業微信管理背景檢視;
在功能中調用上圖API可儲存所有外部聯系人id到聯系人資料表中,這裡就不詳細說明了;
整體思路
①使用者選擇群發消息類型:文本/圖檔/圖檔
②選擇任意個聯系人
③根據消息類型填寫消息内容
④調用API群發消息,成員id為目前使用者的成員id字段,外部聯系人id清單為②選擇的聯系人的外部聯系人id,消息類型和内容由①和③決定
功能步驟
1.通過互動輸入的步驟讓使用者選擇消息類型;
2.選擇群發對象(可擷取到外部聯系人id)
3.判斷使用者選擇的消息類型,根據消息類型讓使用者填寫對應的消息内容;
如:選擇了文本類型,就隻需要填寫文本内容;
最後再根據參數調用API群發消息
最後再根據API傳回的msgid存到這條資料中,便于之後查詢發送結果;
其他消息類型操作同理,這裡就不詳細說明了;
API參數&代碼如下
async function run($input,$output,$modules = modules){
const wxworkThirdApi = $modules.wxworkThirdApi;
let contact_list = [...$input.external_userid].map(v=>v["5f8941df2447e4265cd62ae3"]);
let data = {
chat_type: "single",
external_userid: contact_list,
sender: $input.userid,
text: {
content: $input.content
}
}
switch ($input.type) {
case "文本":
break;
case "圖檔":
let image_url = $input.imgUrl;
let mediaName = new Date().getTime() + ".png";
//上傳臨時素材
let media = await wxworkThirdApi.uploadMediaByUrl(image_url, "image", mediaName);
data.image = {
media_id: media.media_id
}
break;
case "圖文":
let img = $input.link_picurl || "";
img = img.replace(/^https:/, "http:");
data.link = {
title: $input.link_title,
picurl: img,
desc: $input.link_desc,
url: $input.link_url
}
break;
}
let addmsgresult = await wxworkThirdApi.request(
{
method: "post",
url: "externalcontact/add_msg_template",
data: data
}
)
$output.msgid = addmsgresult.msgid;
}