如何申請微信企業(yè)號服務(wù)商家(怎么申請微信企業(yè)服務(wù)號)
場景描述:
在客戶關(guān)系管理系統(tǒng)中,銷售人員新增的報價后,會給到他的上級領(lǐng)導(dǎo)進(jìn)行審核,報價信息將通過企業(yè)微信企業(yè)號發(fā)送卡片消息到上級領(lǐng)導(dǎo)的企業(yè)微信號中,領(lǐng)導(dǎo)通過卡片消息查看報價信息,并且進(jìn)行審核操作。
實現(xiàn)效果:
新增報價后發(fā)送消息卡片至上級領(lǐng)導(dǎo)的企業(yè)微信中,上級領(lǐng)導(dǎo)可在企業(yè)微信上進(jìn)行審批操作。

前期準(zhǔn)備:
實現(xiàn)此功能模塊需要在白碼低代碼開發(fā)平臺創(chuàng)建以下6個數(shù)據(jù)表。
- 公司表:存儲公司(客戶)信息,其中公司聯(lián)系人可能會存在多個的情況,因此這個字段的類型為集合。

2.聯(lián)系人表:用于記錄聯(lián)系人的基本信息。其中,公司字段關(guān)聯(lián)的是客戶(公司),聯(lián)系人則是此公司的客戶代表,一個公司可以有多個聯(lián)系人,因此字段類型為集合。銷售歸屬人是跟進(jìn)此聯(lián)系人的銷售人員的關(guān)聯(lián)字段。

3.報價表:用于記錄報價信息,包括產(chǎn)品明細(xì)以及審核記錄,所屬的客戶(公司)以及聯(lián)系人。

4.審核記錄表:用于記錄審核信息,包括審核人,審核時間等。

5.產(chǎn)品明細(xì)表:用于記錄報價單中的產(chǎn)品(包括數(shù)量、單價、明細(xì)金額等)

6.用戶表:用于記錄系統(tǒng)用戶信息,包括部門,上級領(lǐng)導(dǎo),客戶數(shù)上線,企業(yè)微信userid等字段。

實現(xiàn)步驟:
- 創(chuàng)建發(fā)送企業(yè)微信消息卡片(報價信息)的云函數(shù)。
配置API參數(shù):

編程代碼:
async function run($input, $output, $modules = modules) {
/**發(fā)送應(yīng)用文本消息
* 官方API:https://work.weixin.qq.com/api/doc/90000/90135/90236
* 錯誤碼查詢工具:https://open.work.weixin.qq.com/devtool/query?e=
*
* touser、toparty、totag不能同時為空
*/
const wxworkThirdApi = $modules.wxworkThirdApi;
let agentid = await wxworkThirdApi.getAgentId();
let title = $input.title;//任務(wù)標(biāo)題
let description = $input.description;
let task_id = $input.task_id;
let offer_url = await $modules.helper.getConfig("offer_url");
let order_url = await $modules.helper.getConfig("order_url");
let url = $input.title.includes("報價") ? offer_url : order_url;
let data = {
touser:$input.touser,
msgtype:"interactive_taskcard",//任務(wù)卡片消息
agentid,
interactive_taskcard:{
title,
description,
url,
task_id,
btn:[
{
key:"approve",
name:"通過",
color:"blue",
is_bold:false,
},
{
key:"reject",
name:"拒絕",
color:"red",
is_bold:false,
}
],
},
};
//發(fā)送
let task_card_message = await wxworkThirdApi.request({
method: "post",
url: "message/send",
data
});
/**
* 如果部分接收人無權(quán)限或不存在,發(fā)送仍然執(zhí)行,但會返回?zé)o效的部分(即invaliduser或invalidparty或invalidtag),常見的原因是接收人不在應(yīng)用的可見范圍內(nèi)。
* 如果全部接收人無權(quán)限或不存在,則本次調(diào)用返回失敗,errcode為81013。
* 返回包中的userid,不區(qū)分大小寫,統(tǒng)一轉(zhuǎn)為小寫
*/
$output.invaliduser = task_card_message.invaliduser;
$output.invalidparty = task_card_message.invalidparty;
$output.invalidtag = task_card_message.invalidtag;
$output.res = task_card_message;
}
2.創(chuàng)建一個“新增報價”功能,用于錄入報價單信息。并且將生成的報價信息通過企業(yè)微信發(fā)送卡片消息給上級領(lǐng)導(dǎo)進(jìn)行審核。
(1)選擇聯(lián)系人:篩選銷售歸屬人為當(dāng)前用戶的聯(lián)系人。

(2)新增報價:新增一條報價單數(shù)據(jù)。
(3)新增產(chǎn)品明細(xì):新增報價單中的產(chǎn)品明細(xì)集合,設(shè)置好明細(xì)中各種金額的計算。
(4)獲取當(dāng)前系統(tǒng)用戶:

(5)獲取上級領(lǐng)導(dǎo):篩選出當(dāng)前用戶從屬的上級領(lǐng)導(dǎo)。

(6)獲取聯(lián)系人公司:做一個篩選,獲取聯(lián)系人所屬的公司(客戶)。

(7)計算參數(shù):將上方步驟中的數(shù)據(jù)進(jìn)行整合,輸出。

async function runProcess($model = model,$plugin = plugin,$params = params){ let contact_name = $params.contact_name;//聯(lián)系人名稱 let company_name = $params.company_name;//聯(lián)系人公司名稱 company_name = company_name || "個人" let project_name = $params.project_name;//項目名稱 let detail_total = $params.detail_total;//明細(xì)總額 let preferential_amount = $params.preferential_amount;//優(yōu)惠金額 let final_amount = $params.final_amount;//最終金額 let time = new Date().getTime();//當(dāng)前時間戳 let date = $params.date; let desc = `客戶:${company_name} ${contact_name}\n項目名稱:${project_name}\n明細(xì)總額:${detail_total}\n優(yōu)惠金額:${preferential_amount}\n最終金額:${final_amount}\n創(chuàng)建日期:${date}` $model.output["desc"] = desc; $model.output["task_id"] = `offer_${$params.offer._id}_${time}` $model.output["title"] = `${$params.name}的報價申請`}
(8)發(fā)送企業(yè)微信消息卡片:調(diào)用云函數(shù),設(shè)置好模板中的輸入?yún)?shù)。

3.創(chuàng)建一個“審核報價”功能,用于審核報價單。
(1)選擇報價:選擇需要進(jìn)行審核的報價,需要篩選狀態(tài)為“審核中”的報價單數(shù)據(jù)。

(2)報價狀態(tài)判斷:若報價單狀態(tài)不為“審核中”,則無法進(jìn)行審核且無法提交。若為審核中則可以進(jìn)行審核意見輸入,并且在系統(tǒng)中新增一條審核記錄。

(3)新增審核記錄:對當(dāng)前報價審核操作進(jìn)行記錄,其中“審核人”設(shè)為當(dāng)前用戶。

(4)審核后狀態(tài)判斷:若報價通過,則更新報價狀態(tài)為“已通過”,若不通過,則更新報價狀態(tài)為“已拒絕”。

(5)更新報價狀態(tài)(已通過/已拒絕):


(6)更新任務(wù)卡片消息狀態(tài):調(diào)用云函數(shù),審核操作完成后,更新消息卡片上的審核意見信息。

4.創(chuàng)建更新消息卡片的云函數(shù)
配置API參數(shù):

編程代碼:
async function run($input,$output,$modules = modules){
const wxworkThirdApi = $modules.wxworkThirdApi;
let agentid = await wxworkThirdApi.getAgentId();
let data = {
userids:[$input.userid],
agentid,
task_id:$input.task_id,
replace_name:$input.replace_name
};
let res = await wxworkThirdApi.request({
method: "post",
url: "message/update_taskcard",
data
});
$output.invaliduser = res;
}

如若轉(zhuǎn)載,請注明出處:http://www.qjsdgw.cn/87363.html