社群运营是私域流量变现的重要场景。随着群成员的增加,广告轰炸、恶意刷屏、关键词违规等现象层出不穷。依靠人工24小时盯着群聊不现实,因此必须构建一套自动化的群管理与风控系统。
核心功能模块
自动欢迎与入群打招呼:当检测到ON_ROOM_ADD_MEMBER事件时,自动@新人发送欢迎语。
关键词实时过滤:对所有群聊文本消息进行正则匹配或敏感词库比对。
违规自动处置:达到警告阈值后,自动执行踢出群聊(RemoveChatRoomMember)并加入黑名单。
核心代码实现
下面是一个使用Go语言编写的群成员变动及关键词风控处理逻辑:
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"strings"
)
type WebhookPayload struct {
Event string `json:"Event"`
Data map[string]interface{} `json:"Data"`
}
const (
ApiBaseUrl = "http://127.0.0.1:2531/v2/api"
ApiToken = "YOUR_GEWE_TOKEN_HERE"
)
func handleWechatEvent(w http.ResponseWriter, r *http.Request) {
var payload WebhookPayload
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
switch payload.Event {
case "ON_ROOM_ADD_MEMBER":
// 新人入群事件
roomID := payload.Data["RoomId"].(string)
nickName := payload.Data["NickName"].(string)
sendRoomWelcome(roomID, nickName)
case "ON_ROOM_TEXT_MESSAGE":
// 群文本消息风控
content := payload.Data["Content"].(string)
roomID := payload.Data["RoomId"].(string)
wxid := payload.Data["FromUserName"].(string)
if containsBadWords(content) {
removeMemberFromRoom(roomID, wxid)
}
}
w.WriteHeader(http.StatusOK)
w.Write([]byte("success"))
}
func sendRoomWelcome(roomID, nickName string) {
url := fmt.Sprintf("%s/group/postText", ApiBaseUrl)
payload := map[string]string{
"appId": "wx_app_id_sample",
"roomID": roomID,
"content": fmt.Sprintf("欢迎 @%s 加入本群!请遵守群规,严禁广告。", nickName),
}
sendHttpRequest(url, payload)
}
func removeMemberFromRoom(roomID, wxid string) {
url := fmt.Sprintf("%s/group/kickOut", ApiBaseUrl)
payload := map[string]string{
"appId": "wx_app_id_sample",
"roomID": roomID,
"wxids": wxid,
}
sendHttpRequest(url, payload)
}
func containsBadWords(text string) bool {
badWords := []string{"兼职", "代刷", "加V", "返利"}
for _, word := range badWords {
if strings.Contains(text, word) {
return true
}
}
return false
}
func sendHttpRequest(url string, data map[string]string) {
body, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("X-GEWE-TOKEN", ApiToken)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
_, err := client.Do(req)
if err != nil {
fmt.Println("HTTP Request Error:", err)
}
}
func main() {
http.HandleFunc("/webhook", handleWechatEvent)
fmt.Println("Server started at :8080")
http.ListenAndServe(":8080", nil)
}
总结
通过自动化的群控接口,能够实现对社群秩序的秒级响应。配合日志审计与风控大盘,能够大幅度降低私域社群的运营成本。