平台一个月就要花去5000元多的短信费用,发送信息量巨大,偶尔造成短信系统故障等问题,而且成本也很高。为了解缓解原短信系统的压力,同时希望将部份降下来,因此不断寻找更好的替代方案。
最近发现研究了google talk 这款实时聊天工具,gtalk是Google的IM工具,除了具有IM功能外,另外还加上了Viop功能,界面清新大方,可直接链接Gmail,接受查看邮件。
这是个十分不错的工具,界面和功能十分简单,而且免费开源;提供第三方接口,很适合作为一款桌面和移动设备的告警系统。
我针对gtalk的PHP接口进行了二次开发和部署,实现一个可以通过远程URL调用的接口。虽然只是做了很少的二次开发量,但是效果不是比较满意。
我的运行框架是:php 5.2.17 + apache 2.2.3
此次版本为 beta版,没有使用mysql开发后台管理功能,所有的配置都在指定文件里定义。
流程:客户端 (请求) -> gtalk接口(连接) -> gtalk 服务端(发信) ->终端IM(接收)
接口使用说明:
文件 | /talk.php |
URL调用方法 | |
CURL调用方法 | curl -x 192.168.1.2:80 -G http://gtalk.4399.com/talk.php -d k=*** -d g=1 -d m=要发的消息 |
说明 | k 监控配置的密钥 g 要发送的管理员组,多组可用逗号分隔;(g=1,2,3) m要发送的信息 |
状态码 | a0:非法key g0:未指定联系人分组 m0:消息为空 f0:发送失败 b0:发送成功 |
接入步骤:
1. 加HOST
192.168.1.2 gtalk.4399.com
2. 定义联系人分组信息
vim /var/www/html/gtalk/config.php
用户列表:A{0-9}+
A1=array(‘邮箱’); A2=array(‘邮箱’);A3,A4…
分组列表:[0-9] => ‘用户列表’
$arrGTalkReceiver = array(
’1′ => $A1 ,
’2′ => $A2 ,
……
);
示例:
<?php
/**
* @desc gtalk 帐号相关
*/
define('GTALK_SENDER_ACCOUNT','aiyou4399@gmail.com'); //gtalk监控发信人帐号
define('GTALK_SENDER_PASSWORD','***'); //gtalk监控发信人密码
define('GTALK_CONNECT_KEYS','***'); //gtalk监控通信KEYS
//运维组
$A1 = array(
'guzhiqiang@4399.com' ,
);
//工作室
$A2 = array(
'test@gmail.com' ,
);
//接收人分组表
$arrGTalkReceiver = array(
'1' => $A1 ,
'2' => $A2 ,
);
3. 发送消息
命令行:
curl -x 192.168.1.2:80 -G http://gtalk.4399.com/talk.php -d k=*** -d g=1 -d m=要发的消息
HTTP API:
http://gtalk.4399.com/talk.php?k=***&g=1&m=要发的信息
4. 返回结果集
返回结果集是json_encode数据。
类型 | 错误码 | 说明 |
keys | a0 | 非法key |
msg | m0 | 消息为空 |
gid | g0 | 未指定联系人分组 |
send | f0 | 发送失败 |
send | b0 | 发送成功 |
附件下载:gtalk API