WorkMessageServices.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\services\message\wechat;
  12. use app\services\BaseServices;
  13. use EasyWeChat\Server\Guard;
  14. /**
  15. * 企业微信事件处理
  16. * Class WorkMessageServices
  17. * @package app\services\message\wechat
  18. * 回调测试地址: https://open.work.weixin.qq.com/wwopen/devtool/interface/combine
  19. */
  20. class WorkMessageServices extends BaseServices
  21. {
  22. /**
  23. * 回调事件处理
  24. * @param Guard $server
  25. * 事件处理文档: https://work.weixin.qq.com/api/doc/90000/90135/90237
  26. */
  27. public function hook($server)
  28. {
  29. $server->setMessageHandler(function ($message) {
  30. switch ($message->MsgType) {
  31. case 'event':
  32. $this->event($message);
  33. break;
  34. case 'text'://文本消息
  35. break;
  36. case 'image'://图片消息
  37. break;
  38. case 'voice'://语音消息
  39. break;
  40. case 'video'://视频消息
  41. break;
  42. case 'news'://图文消息
  43. break;
  44. }
  45. });
  46. }
  47. /**
  48. * 事件处理
  49. * @param $message
  50. */
  51. protected function event($message)
  52. {
  53. switch (strtolower($message->Event)) {
  54. case 'subscribe'://成员关注及取消关注事件
  55. break;
  56. case 'unsubscribe'://成员关注及取消关注事件
  57. break;
  58. case 'enter_agent'://进入应用
  59. break;
  60. case 'location'://上报地理位置
  61. break;
  62. case 'batch_job_result'://异步任务完成事件推送
  63. break;
  64. case 'change_contact'://通讯录变更事件
  65. $this->changeContactEvenv($message);
  66. break;
  67. case 'click'://点击菜单拉取消息的事件推送
  68. break;
  69. case 'view'://点击菜单跳转链接的事件推送
  70. break;
  71. case 'scancode_push'://扫码推事件的事件推送
  72. break;
  73. case 'scancode_waitmsg'://扫码推事件且弹出“消息接收中”提示框的事件推送
  74. break;
  75. case 'pic_sysphoto'://弹出系统拍照发图的事件推送
  76. break;
  77. case 'pic_photo_or_album'://弹出拍照或者相册发图的事件推送
  78. break;
  79. case 'pic_weixin'://弹出微信相册发图器的事件推送
  80. break;
  81. case 'location_select'://弹出地理位置选择器的事件推送
  82. break;
  83. case 'open_approval_change'://审批状态通知事件
  84. break;
  85. case 'taskcard_click'://任务卡片事件推送
  86. break;
  87. case 'share_agent_change'://共享应用事件回调
  88. break;
  89. }
  90. }
  91. /**
  92. * 通讯录变更事件处理
  93. * @param $message
  94. */
  95. protected function changeContactEvenv($message)
  96. {
  97. switch (strtolower($message->ChangeType)) {
  98. case 'create_party'://新增部门事件
  99. break;
  100. case 'update_party'://更新部门事件
  101. break;
  102. case 'delete_party'://删除部门事件
  103. break;
  104. case 'update_tag'://标签成员变更事件
  105. break;
  106. }
  107. }
  108. }