在公司中有些致命的告警要求使用打电话告警,经过一番的查询发现很多服务商直接提供了API接口。
本例我使用了阿里云的API。
首先将SDK包复制到/usr/lib/python2.7/site-packages
,python3的用户,请自行在阿里云下载。
这个包就是官方的未经修改,不放心的小伙伴儿可以使用pip命令安装
pip install aliyun-python-sdk-core
需要在阿里云平台中准备一个tts语音模板
拨打电话脚本
#!/usr/bin/env python
#coding=utf-8
import sys
import datetime
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient('dX************Q', '00**********vw', 'default')
src = sys.argv[1]
title = sys.argv[2]
note = sys.argv[3]
phone = sys.argv[4]
data = "{\"src\": \""+src+"\",\'title\': \'"+title+"\',\"note\": \""+note+"\"}"
print(data)
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('dyvmsapi.aliyuncs.com')
request.set_method('POST')
request.set_protocol_type('https') # https | http
request.set_version('2017-05-25')
request.set_action_name('SingleCallByTts')
request.add_query_param('CalledShowNumber', "021*******6")
request.add_query_param('CalledNumber', phone)
request.add_query_param('TtsCode', "TTS_168285137")
request.add_query_param('TtsParam', data)
response = client.do_action(request)
#print(response)
file = r'/tmp/'+datetime.datetime.now().strftime('%Y-%m-%d')+'_call.log'
date = time1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open(file, 'a+') as f:
f.write(date+':'+response+'\n'+data+'\n')
#print(str(response, encoding = 'utf-8'))
调用方法:
./call.py 平台名称 报警主题 备注内容 13800138000
zabbix平台中使用方法:
将脚本放在zabbix指定的目录,并添加执行权限,按下图设置
告警媒体设置:
添加用户的告警方式:
链接:https://pan.baidu.com/s/19B3Dat7mVhb8OKZQbTyUkA
提取码:pf6e
复制这段内容后打开百度网盘手机App,操作更方便哦