Récemment reçu une nouvelle demande, besoin d'envoyer des modèles de messages aux utilisateurs qui suivent le compte de service, écrire un blog pour enregistrer le chemin emprunté pour répondre à cette demande, le package d'extension utilise easywechat
laravel combiné avec easywechat pour envoyer un modèle de compte public détails des messages Description, merci à l'auteur d'easywechat, c'est très utile pour les novices !
Comme notre situation est assez particulière, le compte officiel lié au mini programme et le compte officiel à pousser ne sont pas les mêmes. Cela implique la possibilité que l'union_Id soit incohérent, donc les deux comptes officiels doivent être liés à l'ouverture WeChat. Si ce n'est pas le cas, inscrivez-vous simplement et liez le
WeChat Open Platform Document
Configurer le nom de domaine sécurisé js
Générer un secret (enregistrez-le principalement, la réinitialisation ultérieure affectera l'activité en ligne)
Remplissez et activez la configuration du serveur
L'adresse du serveur renseignée ici sera utilisée pour les opérations ultérieures réception des comptes publics Divers rappels d'événements, tels que l'annulation du suivi
Le débogage local nécessite une pénétration intranet. Recherchez vous-même des didacticiels spécifiques. Je ne sais pas comment modifier la configuration. WeChat vérifiera si l'adresse du serveur renseignée peut être reçue normalement. donc ça ira Une vérification nécessite que l'interface donne des paramètres de retour corrects
Parce que la vérification WeChat et les rappels ultérieurs suivront cette route, la vérification est une demande GET, et les rappels d'événements ultérieurs et autres sont des demandes de publication , donc l'itinéraire doit être défini Pour tout typeRoute::any('official/notify', 'WechatController@officialNotify');Copier après la connexion
easywechat auteur An Zhengchao a considéré pour nous que
vérification du serveur est compatible avecrecevoir et répondre aux messagesdans un seul lien, vous pouvez donc l'utiliser directement selon le document
mes besoins professionnels, une fois que l'utilisateur y a prêté attention, un message qui peut accéder au mini programme doit être envoyé à l'utilisateur. Ici, après avoir reçu le message d'événement, il est nécessaire de déterminer s'il s'agit d'un problème. événement, puis modifiez le message de retour par le code suivant. Cliquez sur le lien a ici. Vous pouvez ensuite ouvrir directement le mini programme sans demander de confirmation à l'utilisateur Il est à noter qu'en suivant le compte public, vous pouvez obtenir l'unionid. et Certaines informations de base, le fait de ne plus suivre ne peut obtenir que l'openidpublic function officialNotify() { Log::channel('wechat')->info("公众号回调!!!!!1" ); $body = file_get_contents('php://input'); Log::channel('wechat')->info($body); $config = [ 'app_id' => config('wechat.yueliu_official_account.app_id'), 'secret' => config('wechat.yueliu_official_account.secret'), 'token' => config('wechat.yueliu_official_account.token'),// 'aes_key' => config('wechat.yueliu_official_account.aes_key'), // 明文模式请勿填写 EncodingAESKey 'aes_key' => '', // 明文模式请勿填写 EncodingAESKey 'log' => [ 'level' => 'error', 'file' => storage_path('logs/wechat.log'), ], 'response_type' => 'array' ]; $app = Factory::officialAccount($config); $app->server->push(function ($message) { Log::channel('wechat')->info($message); switch ($message['MsgType']) { case 'event': return '收到事件消息'; break; case 'text': return '收到文本消息'; break; case 'image': return '收到图片消息'; break; case 'voice': return '收到语音消息'; break; case 'video': return '收到视频消息'; break; case 'location': return '收到坐标消息'; break; case 'link': return '收到链接消息'; break; case 'file': return '收到文件消息'; // ... 其它消息 default: return '收到其它消息'; break; } }); // 在 laravel 中: $response = $app->server->serve(); // $response 为 `Symfony\Component\HttpFoundation\Response` 实例 // 对于需要直接输出响应的框架,或者原生 PHP 环境下 $response->send(); // 而 laravel 中直接返回即可: return $response; }Copier après la connexion
case 'event': return '欢迎关注音视频资产管理与协同交付平台「laravel」官方微信。 <a>点击跳转</a> 网页版请至: https://learnku.com'; break;
Rendu
L'événement de rappel de suivi du compte officiel WeChat enverra également les informations de base et l'unionid de l'utilisateur. Assurez-vous de modifier l'openid du compte officiel. compte Enregistrez-le avec l'unionid, et les messages modèles suivants seront envoyés selon l'openid du compte officiel. Postulez pour activer le modèle de message sur la plateforme publique WeChat. Recherchez le modèle de message dans "+ Nouvelles fonctionnalités" au bas de la page. menu de droite et cliquez pour demander l’activation. Cela prend environ 1 à 3 jours ouvrables. Je l'ai réussi en un jour
Après l'ouverture, sélectionnez le secteur et choisissez le type de modèle. Si la bibliothèque de modèles fournie par WeChat ne trouve pas la même entreprise que la vôtre, vous devez alors soumettre la candidature vous-même. cela prend beaucoup de temps, environ 7 à 15 jours. Il est recommandé d'utiliser la bibliothèque de modèles
L'ID du modèle ici doit être stocké dans le code et il doit être utilisé pour envoyer des messages de modèle à l'avenir.
Ce qui suit est basé sur les besoins de l'entreprise, à l'utilisateur Le modèle de message est envoyé, le code est le suivant
$openId = '公众号的openid'; $config = [ 'app_id' => config('wechat.yueliu_official_account.app_id'), 'secret' => config('wechat.yueliu_official_account.secret'), 'token' => config('wechat.yueliu_official_account.token'), // 'aes_key' => config('wechat.yueliu_official_account.aes_key'), // 明文模式请勿填写 EncodingAESKey 'aes_key' => '', // 明文模式请勿填写 EncodingAESKey 'log' => [ 'level' => 'error', 'file' => storage_path('logs/wechat.log'), ], 'response_type' => 'array' ]; $app = Factory::officialAccount($config);// $user = $app->user->get($openId);// dd($user); // 发送模板消息 $app->template_message->send([ 'touser' => $openId, 'template_id' => '模板id', 'url' => 'http://www.网站.cn', 'miniprogram' => [ // 跳转到小程序,和上面的url同时存在的话,则优先显示小程序 'appid' => '小程序的id', 'pagepath' => '小程序页面地址', ], 'data' => [ 'first' => [ 'value' => '赵师傅已加入群组演示项目', 'color' => '#888888' ], 'keyword1' => [ 'value' => '加入项目' ], 'keyword2' => [ 'value' => '加入成功' ], 'keyword3' => [ 'value' => '2021-12-10 14:21:05' ], 'remark' => [ 'value' => '点击打开小程序' ], ], ]);
Rendu
Recommandations associées : Les cinq derniers didacticiels vidéo Laravel
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!