代码拉取完成,页面将自动刷新
一个统一的消息通知系统,支持ThinkPHP框架,可以方便地发送短信、钉钉、微信等多种消息。
通过Composer安装:
composer require xibeicity/message
cp vendor/xibeicity/message/config/message.php config/message.php
# 默认消息驱动
MESSAGE_DRIVER=sms
# 阿里云短信配置
ALIYUN_ACCESS_KEY_ID=your-access-key-id
ALIYUN_ACCESS_KEY_SECRET=your-access-key-secret
ALIYUN_SMS_SIGN_NAME=your-sign-name
ALIYUN_SMS_TEMPLATE_CODE=your-template-code
ALIYUN_REGION_ID=cn-hangzhou
# 钉钉配置
DINGTALK_APP_KEY=your-app-key
DINGTALK_APP_SECRET=your-app-secret
DINGTALK_AGENT_ID=your-agent-id
# 钉钉群机器人配置
DINGTALK_ROBOT_WEBHOOK=your-webhook-url
DINGTALK_ROBOT_SECRET=your-secret
# 微信公众号配置
WECHAT_OFFICIAL_ACCOUNT_APP_ID=your-app-id
WECHAT_OFFICIAL_ACCOUNT_APP_SECRET=your-app-secret
WECHAT_OFFICIAL_ACCOUNT_TOKEN=your-token
WECHAT_OFFICIAL_ACCOUNT_AES_KEY=your-aes-key
# 微信小程序配置
WECHAT_MINI_PROGRAM_APP_ID=your-app-id
WECHAT_MINI_PROGRAM_APP_SECRET=your-app-secret
# 企业微信群机器人配置
WECHAT_ROBOT_WEBHOOK=your-webhook-url
php think migrate:run
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
// 发送普通短信
$message->driver('sms')->send(['13800138000'], '您的验证码是:123456');
// 使用模板发送短信
$message->driver('sms')->sendTemplate(['13800138000'], 'SMS_123456789', [
'code' => '123456'
], [
'sign_name' => '您的签名'
]);
// 批量发送短信
$message->driver('sms')->batchSend([
['phone' => '13800138000', 'content' => '验证码:123456'],
['phone' => '13800138001', 'content' => '验证码:654321']
]);
// 获取发送状态
$result = $message->driver('sms')->getStatus();
if (!$result['success']) {
echo $message->driver('sms')->getError();
}
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
// 发送普通消息
$message->driver('dingtalk')->send(['user123'], '这是一条测试消息');
// 发送带链接的消息
$message->driver('dingtalk')->send(['user123'], '请查看详情', [
'link' => 'https://example.com',
'title' => '通知标题'
]);
// 批量发送消息
$message->driver('dingtalk')->batchSend([
['user_id' => 'user123', 'content' => '消息1'],
['user_id' => 'user456', 'content' => '消息2']
]);
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
// 发送文本消息
$message->driver('dingtalk_robot')->send(['@all'], '这是一条测试消息', [
'at' => ['13800138000'],
'at_all' => false
]);
// 发送markdown消息
$message->driver('dingtalk_robot')->send(['@all'], '# 标题\n内容', [
'msg_type' => 'markdown'
]);
// 发送带链接的消息
$message->driver('dingtalk_robot')->send(['@all'], '请查看详情', [
'msg_type' => 'link',
'title' => '通知标题',
'link' => 'https://example.com'
]);
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
// 发送普通模板消息
$message->driver('wechat_official_account')->send(['OPENID'], '您有一条新通知');
// 发送完整模板消息
$message->driver('wechat_official_account')->sendTemplate(['OPENID'], 'template-id', [
'first' => '您有一条新通知',
'keyword1' => '通知内容',
'keyword2' => '2024-01-01 12:00:00',
'remark' => '请及时查看'
], [
'url' => 'https://example.com'
]);
// 批量发送模板消息
$message->driver('wechat_official_account')->batchSend([
['openid' => 'OPENID1', 'content' => '通知1'],
['openid' => 'OPENID2', 'content' => '通知2']
]);
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
// 发送订阅消息
$message->driver('wechat_mini_program')->send(['OPENID'], '商品已发货', [
'template_id' => 'template-id',
'page' => 'pages/index/index',
'data' => [
'thing1' => ['value' => '商品名称'],
'amount2' => ['value' => '89.90'],
'date3' => ['value' => '2024-01-01 12:00:00']
]
]);
// 使用预设模板发送订阅消息
$message->driver('wechat_mini_program')->sendTemplate(['OPENID'], 'template-id', [
'thing1' => '商品名称',
'amount2' => '89.90',
'date3' => '2024-01-01 12:00:00'
], [
'page' => 'pages/index/index'
]);
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
// 发送文本消息
$message->driver('wechat_robot')->send(['@all'], '这是一条测试消息', [
'mentioned_list' => ['wangwu', 'lisi'],
'mentioned_mobile_list' => ['13800138000']
]);
// 发送markdown消息
$message->driver('wechat_robot')->send(['@all'], '# 标题\n内容', [
'msg_type' => 'markdown'
]);
// 发送图片消息
$message->driver('wechat_robot')->send(['@all'], '', [
'msg_type' => 'image',
'base64' => 'base64编码的图片内容',
'md5' => '图片内容的md5值'
]);
所有驱动都支持错误处理:
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
$result = $message->driver('sms')->send(['13800138000'], '验证码:123456');
if (!$result['success']) {
// 获取错误信息
$error = $message->driver('sms')->getError();
// 处理错误
echo "发送失败:{$error}";
}
use Xibeicity\Message\Contracts\MessageInterface;
class CustomDriver implements MessageInterface
{
public function send(array $to, string $content, array $options = []): array
{
// 实现发送逻辑
return [
'success' => true,
'message_id' => 'xxx'
];
}
public function sendTemplate(array $to, string $templateCode, array $templateParams = [], array $options = []): array
{
// 实现模板消息发送逻辑
return [
'success' => true,
'message_id' => 'xxx'
];
}
public function batchSend(array $messages): array
{
// 实现批量发送逻辑
return [
'success' => true,
'message_id' => 'xxx'
];
}
public function getStatus(): array
{
// 返回发送状态
return [
'success' => true,
'message_id' => 'xxx'
];
}
public function getError(): ?string
{
// 返回错误信息
return null;
}
}
use Xibeicity\Message\MessageManager;
$message = new MessageManager();
$message->extend('custom', function () {
return new CustomDriver();
});
// 使用自定义驱动发送消息
$message->driver('custom')->send(['user123'], '这是一条测试消息');
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。