首页 / 博客 / 场景·私域·运营

摄影机构:微信选片通知与套餐推送

分类:场景·私域·运营 · 标签:微信选片通知、摄影机构客户运营、个人微信API

前言

摄影机构拍完一组照片,往往要通过企业微信、短信或邮件逐一通知客户去看片、选片,再手动发套餐升级建议——流程割裂、回复率低、成单转化差。而绝大多数客户其实天天刷个人微信,却很少打开邮件或企业微信。借助 个人微信API,可以将选片提醒、套餐推送、付款催收等节点全部接入自动化流程,让摄影机构从拍摄完成到客户确认的整条链路无缝跑通。


一、摄影机构的通知痛点与自动化机会

摄影机构的日常客户触达,大致涵盖四个关键节点:

  1. 拍摄完成通知:告知客户照片已上传至选片系统,附上链接和密码。
  2. 选片截止提醒:距截止日还有 48 小时、24 小时时分别提醒,避免客户忘记。
  3. 套餐升级推送:客户已选 X 张,告知还差 Y 张即可升级至高级套餐,引导追加。
  4. 付款/取片通知:精修完成后推送取片链接,并在付款未完成时发起温和催收。

传统做法是员工手动复制微信消息,效率极低,且容易在高峰季节漏发。如果能把这四个节点接入自动化 API,每个摄影师工作室每月可节省 10 小时以上的人工通知时间,同时让客户体验更流畅。

核心挑战在于:个人微信账号没有官方的消息推送 API,而企业微信客服的触达率又明显低于私聊。这里 微信iPad协议 是当前技术方案中稳定性最高、封号风险最可控的实现路径——它模拟真实 iPad 设备登录微信,使 API 调用行为与正常用户操作几乎无法区分。


二、整体系统架构设计

在动手写代码之前,先把系统的数据流理清楚,避免后期返工。

2.1 角色与组件

角色职责
选片平台(SaaS/自建)触发选片相关事件(上传完成、截止临近、套餐升级阈值)
业务后端(Python/Node)接收平台 Webhook,拼装消息内容,调用 WechatApi
WechatApi 网关基于 iPad 协议将消息投递到客户个人微信
客服微信账号实际发送消息的微信号,需提前登录并获取 appId
管理后台查看发送记录、失败重试、模板管理

2.2 事件驱动流程

选片平台事件 → Webhook → 业务后端
    ↓
消息模板渲染 + 客户微信号查找
    ↓
POST /api/message/send  →  WechatApi 网关
    ↓
iPad 协议投递到客户微信
    ↓
返回 {"ret":200,"msg":"ok","data":{"msgId":"xxx"}}
    ↓
业务后端记录发送日志

整个链路是异步事件驱动的,高峰期(比如节假日大量婚礼后的选片季)也不会堆积阻塞。


三、WechatApi 接入配置

3.1 注册与设备绑定

前往 WechatApi 控制台 注册账号,完成实名认证后创建设备,扫码登录客服微信号。登录成功后,控制台会生成两个关键凭证:

建议摄影机构至少准备两个客服微信号,一主一备,避免单点封号导致通知中断。

3.2 鉴权方式

WechatApi 采用请求头鉴权,所有接口统一格式:

bashPOST https://api.wechatapi.net/v1/message/send
Content-Type: application/json
VideosApi-token: YOUR_TOKEN_HERE

返回体格式固定为:

json{
  "ret": 200,
  "msg": "ok",
  "data": {
    "msgId": "7012345678901234567",
    "toWxid": "wxid_xxxxxxxxxxxxxxxx",
    "createTime": 1718000000
  }
}

ret 为 200 表示投递成功,非 200 时 msg 字段会给出具体错误原因,常见错误码见文档。


四、核心功能实现:选片通知

4.1 消息模板设计

好的通知消息要做到三点:有称谓、有链接、有截止时间。纯文字消息就够了,不需要图片或小程序卡片,反而降低打开率。

推荐的选片通知文案模板:

Hi {客户姓名},

您的照片已精选上传完毕!

📸 选片系统:{选片链接}
🔑 查看密码:{密码}
⏰ 请在 {截止日期} 前完成选片

您有 {总张数} 张可选,选定 {升级阈值} 张即可享受高级精修套餐(仅需额外加 {差价} 元)。

有任何问题欢迎直接回复,期待您的选择~

这类文案字数适中(150字以内),不触发微信的"营销内容"识别,实测投递率明显高于长段落广告体文案。

4.2 Python 发送示例

下面是一个完整的通知发送函数,包含错误处理和重试逻辑:

pythonimport requests
import time
import logging
from typing import Optional

WECHAT_API_BASE = "https://api.wechatapi.net/v1"
TOKEN = "YOUR_VIDEOS_API_TOKEN"
APP_ID = "YOUR_DEVICE_APP_ID"

def send_selection_notify(
    to_wxid: str,
    customer_name: str,
    album_url: str,
    album_password: str,
    deadline: str,
    total_photos: int,
    upgrade_threshold: int,
    price_diff: int,
    retry: int = 3
) -> Optional[str]:
    """
    发送选片通知到客户微信
    返回 msgId(成功)或 None(失败)
    """
    content = (
        f"Hi {customer_name},\n\n"
        f"您的照片已精选上传完毕!\n\n"
        f"📸 选片系统:{album_url}\n"
        f"🔑 查看密码:{album_password}\n"
        f"⏰ 请在 {deadline} 前完成选片\n\n"
        f"您有 {total_photos} 张可选,选定 {upgrade_threshold} 张即可享受高级精修套餐"
        f"(仅需额外加 {price_diff} 元)。\n\n"
        "有任何问题欢迎直接回复,期待您的选择~"
    )

    payload = {
        "appId": APP_ID,
        "toWxid": to_wxid,
        "content": content,
        "type": 1  # 1=文本消息
    }

    for attempt in range(retry):
        try:
            resp = requests.post(
                f"{WECHAT_API_BASE}/message/send",
                json=payload,
                headers={
                    "Content-Type": "application/json",
                    "VideosApi-token": TOKEN
                },
                timeout=10
            )
            result = resp.json()
            if result.get("ret") == 200:
                msg_id = result["data"]["msgId"]
                logging.info(f"选片通知发送成功 wxid={to_wxid} msgId={msg_id}")
                return msg_id
            else:
                logging.warning(f"发送失败 ret={result.get('ret')} msg={result.get('msg')}")
        except requests.RequestException as e:
            logging.error(f"网络错误 attempt={attempt+1} err={e}")
        
        if attempt < retry - 1:
            time.sleep(2 ** attempt)  # 指数退避:1s, 2s, 4s

    return None

注意几个细节:


五、套餐升级自动推送策略

5.1 推送时机的设计

套餐升级推送是提升客单价最直接的手段,但时机不对容易引起反感。建议的触发逻辑:

触发条件推送内容推送时间
客户已选张数 ≥ 套餐上限的 70%告知还差 N 张可升级,附套餐对比客户选片后 30 分钟内
选片截止前 48 小时且未完成提醒截止时间,顺带提升级引导系统定时任务
客户主动回复询问价格自动回复套餐详情实时触发

第三种场景需要接入消息接收 Webhook,监听客户回复内容,配合关键词匹配实现简单的自动应答。这属于 微信二次开发 的进阶用法,适合有开发资源的摄影工作室。

5.2 定时截止提醒(Bash + cron 示例)

对于截止提醒,可以用一个简单的脚本配合系统 crontab 实现:

bash#!/usr/bin/env bash
# remind_deadline.sh
# 每天 10:00 执行,查询 48 小时内截止的订单并发送提醒

set -euo pipefail

API_BASE="https://api.wechatapi.net/v1"
TOKEN="YOUR_VIDEOS_API_TOKEN"
APP_ID="YOUR_DEVICE_APP_ID"

# 从业务数据库查询即将截止的订单(伪代码,替换为实际 DB 查询)
ORDERS=$(python3 /opt/photo_crm/query_deadline_orders.py --hours 48)

echo "$ORDERS" | while IFS=',' read -r WXID NAME DEADLINE REMAINING; do
    MSG="Hi ${NAME},您的选片将于 ${DEADLINE} 截止,目前还剩 ${REMAINING} 张未选,请尽快完成哦~"
    
    curl -s -X POST "${API_BASE}/message/send" \
        -H "Content-Type: application/json" \
        -H "VideosApi-token: ${TOKEN}" \
        -d "{\"appId\":\"${APP_ID}\",\"toWxid\":\"${WXID}\",\"content\":\"${MSG}\",\"type\":1}" \
        | python3 -c "import sys,json; r=json.load(sys.stdin); print('OK' if r.get('ret')==200 else f'FAIL: {r}')"
    
    sleep 1  # 每条消息间隔 1 秒,避免触发频控
done

crontab 配置:

0 10 * * * /opt/photo_crm/remind_deadline.sh >> /var/log/photo_remind.log 2>&1

5.3 套餐对比文案示例

json{
  "ret": 200,
  "msg": "ok",
  "data": {
    "msgId": "7019876543210987654",
    "toWxid": "wxid_abcdef123456789",
    "createTime": 1718100000
  }
}

套餐推送文案建议采用对比格式,直接展示差价和增值,比单纯"我们有套餐升级"有效得多:

李女士,您目前已选了 28 张,距离【精致套餐】只差 12 张~

📌 当前套餐(30张):¥2980,含基础精修
✨ 精致套餐(40张):¥3480,含高级精修+相册设计+电子相册

只需补差价 500 元,多 10 张精修+精美相册设计,性价比超高!

需要升级请回复"升级",或直接点击付款链接:{付款链接}

六、多账号并发与风控注意事项

6.1 发送频率控制

微信平台对消息发送频率有隐性限制,即使通过 iPad 协议也不例外。实践中建议遵守以下原则:

6.2 多账号负载均衡

摄影工作室旺季订单量大,建议注册多个微信客服号,通过 appId 切换实现负载均衡。WechatApi 支持在同一 Token 下管理多个设备,只需在业务层做简单的轮询或加权分配:

pythonimport itertools

# 预配置多设备 appId 列表
APP_IDS = [
    "device_app_id_001",
    "device_app_id_002",
    "device_app_id_003",
]

_app_id_cycle = itertools.cycle(APP_IDS)

def get_next_app_id() -> str:
    return next(_app_id_cycle)

发送时替换 payload 中的 appId 即可,其余调用逻辑完全一致。

6.3 消息内容规避雷区

内容层面需要注意:


七、客户数据与 SCRM 整合

单纯的消息推送只是起点。真正高效的摄影机构客户运营,需要把消息触达数据和客户档案结合起来,形成完整的客户生命周期管理。

WechatApi 提供的消息回调可以反哺 CRM:客户回复"升级"、"不需要"、"多少钱"等关键词时,回调数据写入客户标签,后续推送策略根据标签差异化触达。这本质上是一套轻量 微信SCRM 架构,即便没有购买商业 SCRM 软件,自己用 Python + 数据库也能搭一个够用的版本。

核心数据模型设计建议:

字段类型说明
customer_wxidVARCHAR客户微信 wxid(唯一标识)
order_idVARCHAR拍摄订单号
album_urlVARCHAR选片系统链接
notify_countINT已发送通知次数
last_notify_atDATETIME最后一次通知时间
reply_keywordVARCHAR客户最近回复关键词
is_upgradedBOOLEAN是否已升级套餐
upgrade_remind_sentBOOLEAN是否已发送升级提醒

通过这张表,业务逻辑可以精确控制每位客户的通知节奏,避免重复打扰,也能在客户未回应时有据可查地跟进。


小结

摄影机构的客户通知场景虽然看起来简单,但真正落地需要考虑消息模板设计、发送时机、频率控制、多账号管理、SCRM 数据整合等多个维度。WechatApi 基于 iPad 协议的 个人微信API 方案,在这个场景中提供了稳定、低门槛的接入路径——HTTP POST + JSON 的调用方式对任何有基础后端能力的团队都友好,鉴权和返回格式也足够简洁。

从一个选片通知功能切入,逐步扩展到截止提醒、套餐升级、付款催收,再到 SCRM 标签化运营,整套系统可以随业务需求按需迭代,不需要一开始就做大而全的设计。如果你的摄影工作室还在靠人工复制粘贴发微信通知,不妨从最简单的"拍摄完成通知"开始,花一两天时间接入 API,把这个环节先自动化起来。

想动手试试?

WechatApi 提供扫码登录、消息收发、好友与群管理等 REST 接口,注册后几分钟跑通。

立即免费注册查看开发文档

相关产品页

🔗 个人微信API(产品页)🔗 微信iPad协议(产品页)🔗 微信二次开发(产品页)

相关文章

开源微信框架 vs 托管微信API,到底怎么选微信 SCRM 系统怎么搭建?技术方案详解私域流量自动化运营怎么做(微信侧实战)微信自动化营销获客实战(合规版)
© 2025 WechatApi · 企业级微信智能机器人接入平台
官网价格帮助文档博客
苏ICP备2024128799号 · 苏ICP备2023038368号