微信注册配置流程

一、微信公众号注册

  1. 注册地址:mp.weixin.qq.com,按照网站要求的步骤一步一步操作。
  2. 一定注意区分微信号(添加查找的编号,比如公司的公众号 etsoo2004)和微信名称(显示的名称,比如公司的公众号 ETSOO),一旦设定无法修改。
  3. 操作微信公众号认证,每年¥300,每年需要提前3个月年审。
  4. 认证后进入“开发者中心”,成为开发者,请注意,一旦重新启用,菜单设置会消失,所以请提前备份。在“设置” -> "安全中心" -> “管理员微信号详情” -> 绑定运营者微信号,添加个人微信,管理员扫码认证后,以后就可以自行管理,避免重复请求客户操作。
  5. 开通“模板消息”(仅限服务号),“主营行业”选择“IT 科技” => “IT 软件与服务”,认证通过后,“我的模板”添加“微OA任务提醒”,并在SmartERP后台,修改API设置,更新字段 send_message_temp_id 的值为模板编号。
  6. 配置 user_group_id, customer_group_id, supplier_group_id,配置的值,需要通过 SmartERP 微信接口控制面板的分组或者微信后台添加分组的数组编号获得。自动在绑定微信角色时,设置分组,比如把微信关注者A绑定为客户C,如果定义了customer_group_id(G),则关注者A会自动划分到微信的客户分组中。

二、SmartERP系统登记

  1. 登录系统后切换到客户所在机构。
  2. 进入菜单“机构和用户”、“外部接口”,首先添加定义,修改接口名称为微信服务号名称。
  3. 机构必须是客户对应机构,协议选择“微信”,名称填写微信公共号名称,令牌对应Token值,程序编号对应AppID,加密私匙对应AppSecret,签名密码对应EncodingAESKey。
  4. 勾选“部门”表示该微信号是订阅号。
  5. 通过API设置,添加项目 binding_welcome 定义关注微信时显示的提示内容,可以支持替换 {api_name} - 微信API名称,{org_name} - 机构名称,{org_name_abbr} - 机构名称缩写,{org_foreign_name} - 机构外文名称。
  6. 设置 default_response 定义无响应的默认应答内容 (见存储过程ep_external_api_wechat_text)。
  7. 勾选 transfer_customer_service 表示自动转发客服消息,设置 contact_customer_serivce 表示激活在线客服回复的文本,详情请见“微信客服功能配置
  8. 微信支持带参数的二维码,进入 API 设置,“控制面板” -> “二维码”,类型选择“QR_LIMIT_STR_SCENE”(关键字LIMIT表示有限,最多10万个),场景值系统默认支持产品编号,以P打头,如P12,12表示系统中的产品数字编号,还需要在“API参数”中配置 product_view_url,如: http://www.***.com/product.aspx?id={id},表示扫码后浏览产品的路径;对于投票,定义 vote_view_url,需要在地址中包含模块的标识,如product标识产品,如果路径中没有,通过参数传递,投票成功后的提示文本,通过 vote_result_message 定义,如“投票成功,您是第 {click_times} 位投票者,点击浏览作品和分享!”。
  9. 点击“查询用户”,首次进入时点击“导入”,导入所有关注者信息。
  10. 上传音频格式转化处理程序 ffmpeg.exe 到 bin 目录,需要安装 Windows 媒体服务。
  11. 配置的欢迎词和应答信息,可以支持文本(默认,纯文本,或者 {msg_type: 'text', content: '内容'})、图片({msg_type: 'image', media_id: '图片媒体编号'})、语音({msg_type: 'voice', media_id: '语音媒体编号'})、视频({msg_type: 'video', media_id: '视频媒体编号'})和图文({"msg_type":"news", "items": "<item><title><![CDATA[ETSOO]]></title><brief><![CDATA[测试回复图文信息]]></brief><logo><![CDATA[http://www.etsoo.com/images/logo.png]]></logo><url><![CDATA[www.etsoo.com]]></url></item>"})消息。
  12. 如果要微信后台配置的日志,比如找回丢失的菜单定义,进入“系统” -> “系统日志”,存储过程输入“ep_external_api_test_operation_wechat”,目标对象编号输入接口编号。如果记录过多,通过后台服务器查找:SELECT TOP 5 detail, creation FROM e_system_log cross apply (SELECT t.item.value('@operation', 'varchar(30)') AS operation FROM detail.nodes('/row') t(item)) t where executed_procedure = 'ep_external_api_test_operation_wechat' AND t.operation = 'UpdateMenu' ORDER BY id DESC
  13. 在微信运行时,出现错误“access token expired hint”,请修改微信接口,程序会自动重置访问令牌和刷新时间,相当于执行了 update e_organization_external_api set access_token = NULL, refresh_time = NULL WHERE id = ***,一般可以修复问题。

三、微信后台服务器配置

  1. 设置“IP白名单”,放在哪一个云平台下,ping该云平台域名获取。
  2. URL: https://*.etsoo.com/erp/h/wechat/1/m,放在哪一个云平台下,需要更改 * 为对应云平台地址,数字1代表SmartERP系统里面的外部接口编号,需要根据登记的编号修改。https表示SSL链接,数据交互更安全,但需要服务器支持。
  3. EncodingAESKey随机生成。启用前注意备份已经配置的菜单项目和链接地址。
  4. 消息加解密方式选择“安全模式”。
  5. 接口权限表,打开“接收语音识别结果”、“获取用户地理位置”。
  6. 通过“公众号设置”、“功能设置”,“业务域名”和“JS接口安全域名”和“网页授权域名”设置为平台域名和客户域名,对于私有化部署的客户,除了平台域名,如ttyg.vip.etsoo.com,还需要增加vip.etsoo.com,将文件MP_verify_***.txt上传至平台和客户域名的根目录下。

四、微信自定义菜单

  1. 在SmartERP接口定义界面,点击“菜单自定义”,打开浏览微信自定义菜单代码。
  2. 自定义菜单代码为JSON字符串,外围是一对{}。
  3. 根节点为 button ,可以定义最多三个按钮的数组 [],name 是显示的标签,sub_button 也是一个数组,表示显示的二级菜单。
  4. 二级菜单按钮可以包含属性:type(微信官方定义,请查找开发手册说明), key(SmartERP区分动作的编号)和 url
  5. 按钮:{"type": "click", "name": "按钮", "key": ***}
  6. 链接:{"type": "view", "name": "链接", "url": ***},如果需要通过微信OAuth验证后访问(比如自动登录云站点erp移动版SmartERP,地址是 https://erp.etsoo.com/api/Login/Wechat?url=/erpm/api.htm,完整链接为 https://open.weixin.qq.com/connect/oauth2/authorize?appid=***&redirect_uri=https%3A%2F%2Ferp.etsoo.com%2Fapi%2FLogin%2FWechat%3Furl%3D%252Ferpm%252Fapi.htm&response_type=code&scope=snsapi_base&state=1#wechat_redirect,注意修改appid,云服务器地址和state,state为接口编号。如果需要获取移动版本的其他地址,比如查询客户 customer/search.html,通过控制面板的“长链接转化”进行地址生成。
  7. 资源:{"type": "media_id", "name": "资源", "media_id": ***}
  8. 如果需要点击菜单,自动返回一段文本:{"type":"click","name":"业务联络","key":"sys_click_message"},然后在“API 设置”中增加一个名称为 sys_click_message, 内容为反馈文本的项目。
  9. 如果配置matchrule规则,可以根据不同的刷选条件,显示不同的菜单。
  10. 配置参考案例如下:

    {"button":[{"name":"产品","sub_button":[{"url":"http://www.etsoo.com/mobile","name":"微信开发","type":"view"}]},{"name":"支持","sub_button":[{"name":"名片识别","type":"pic_photo_or_album","key":"sys_namecard"},{"name":"扫条形码","type":"scancode_waitmsg","key":"sys_scan_barcode"},{"url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=***&redirect_uri=https%3A%2F%2Ferp.etsoo.com%2Fapi%2FLogin%2FWechat%3Furl%3Dhttp%253A%252F%252Fwww.etsoo.com%252Fmobile%252Fapi.htm&response_type=code&scope=snsapi_base&state=1#wechat_redirect","name":"微网站","type":"view"}]},{"name":"办公","sub_button":[{"name":"签到/上班","type":"click","key":"sys_check_in"},{"name":"离开/下班","type":"click","key":"sys_check_out"},{"url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=***&redirect_uri=https%3A%2F%2Ferp.etsoo.com%2Fapi%2FLogin%2FWechat%3Furl%3D%252Ferpm%252Fapi.htm%253Fredirect_url%253Doa%252Fadd_service.htm&response_type=code&scope=snsapi_base&state=1#wechat_redirect","name":"写服务档案","type":"view"},{"name":"关联地址","type":"click","key":"sys_connect_office"},{"url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=***&redirect_uri=https%3A%2F%2Ferp.etsoo.com%2Fapi%2FLogin%2FWechat%3Furl%3D%252Ferpm%252Fapi.htm&response_type=code&scope=snsapi_base&state=1#wechat_redirect","name":"SmartERP","type":"view"}]}],"matchrule":{"group_id":"100"},"menuid":401709007}

五、微信操作任务配置

  1. 微信操作之间是没有任何联系,或者说无状态跟踪的。所以为了实现相关联的多步骤操作,需要在系统中维持步骤信息。
  2. e_sequence_task 定义操作任务;e_sequence_task_item 定义操作任务的步骤;e_sequence_task_item_option 定义操作步骤可选项;e_sequence_task_message 定义了用户在微信的操作内容;e_sequence_task_particification 定义了用户参与任务的情况。e_sequence_task_particification_step 定义了用户参与任务每一个步骤的情况。