zabbix-------经过阿里云语音服务实现电话报警

公司需求,因为短信,微信,邮箱都没人看,致使出现服务器出现异常很长时间才看到,所以根据领导要求作一个电话报警:php

电话报警须要须要提供相应的api接口实现和zabbix的对接,我这里找的是阿里云的服务----语音服务  固然你能够去找其余的运营商来知足需求,每一个运营商都有对应的api文档的,多的不说  如今开始吧!html

 

这里是阿里云的语音服务的api调用的文档:https://help.aliyun.com/document_detail/55488.html?spm=a2c4g.11186623.6.573.584a114fh9krP2java

我这里就不细说阿里云上面的语音服务器的建立了  文档上面都有详细说明python

我这里使用的是文本转语音外呼的方式:(下面是贴的阿里云的语音服务建立的步骤)web

步骤 1 建立阿里云帐号

为了访问语音服务,您须要有一个阿里云帐号。若是没有,可首先按照以下步骤建立阿里云帐号:shell

  1. 访问阿里云 官方网站,单击页面上的 免费注册 按钮。
  2. 按照屏幕提示完成注册流程并进行企业实名认证语音服务只支持企业实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,不然部分阿里云服务将没法使用。具体实名认证流程,请参考 这里

步骤 2 获取阿里云访问密钥

为了使用语音文本单呼API-JAVA SDK,您必须申请阿里云的访问密钥。vim

阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您能够用它来签名 API 请求内容以经过服务端的安全验证。后端

该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每一个阿里云用户能够建立多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。api

您能够经过阿里云控制台的 秘钥管理页面 建立、管理全部的访问秘钥对,且保证它处于“启用”状态。因为访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。若是某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。安全

 

步骤 3 在控制台完成号码与模板的申请,得到调用接口必备的参数

在“语音号码”页面完成资质的申请,号码的购买

在“文本转语音模板”页面完成模板申请,或,在“语音通知文件”页面完成文件上传-------等待审批,通常半小时左右就会审批成功

下面主要讲一下python文档,固然你可使用java或者php调用api的方式:

系统: CentOS6.8

Python版本:2.6.6

zabbix:3.0

首先下载Python包  

包名是:dyvms_python.zip

uzip -r dyvms_python.zip /123

解压会有两个文件

 cd dyvms_python

会发现4个文件

 

安装Python环境:

cd api_sdk

会有两个文件:

 

分别 cd aliyun-python-sdk-core和cd aliyun-python-sdk-dyvmsapi

分别到上面两个文件下运行 python set.py install 

运行之后在 /123/dyvms_python/api_demo/aliyun-python-sdk-dyvmsapi 下面建立demo.py文件(短信报警Python解压之后会自带):

vim demo.py:以下

# _*_ encoding:utf-8 _*_
from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByTtsRequest
from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByVoiceRequest
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.profile.region_provider import add_endpoint
import os,sys
import uuid
"""
语音业务调用接口示例,版本号:v20170525
Created on 2017-06-12
"""
#暂时不支持多region,默认配置杭州
REGION = "cn-hangzhou"
# ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的帐号信息进行替换
ACCESS_KEY_ID = "yourAccessKeyId"
ACCESS_KEY_SECRET = "yourAccessKeySecret"
#初始化AcsClient
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
#region_provider.add_endpoint(PRODUCT_NAME,REGION,DOMAIN)
def tts_call(business_id, called_number, called_show_number, tts_code, tts_param=None):
ttsRequest = SingleCallByTtsRequest.SingleCallByTtsRequest()
# 申请的语音通知tts模板编码,必填
ttsRequest.set_TtsCode(tts_code)
# 设置业务请求流水号,必填。后端服务基于此标识区分是否重复请求的判断
ttsRequest.set_OutId(business_id)
# 语音通知的被叫号码,必填。
ttsRequest.set_CalledNumber(called_number)
# 语音通知显示号码,必填。
ttsRequest.set_CalledShowNumber(called_show_number)
# tts模板变量参数
if tts_param is not None:
ttsRequest.set_TtsParam(tts_param)
ttsResponse = acs_client.do_action_with_exception(ttsRequest)
return ttsResponse
__business_id = uuid.uuid1()
print __business_id
#模板中不存在变量的状况下为{}
#params = {}

#若是模板有变量使用一下方法
params = "{\"name\":\"%s\"}"%(sys.argv[2])      
print tts_call(__business_id, sys.argv[1],"075500000000", "TTS_140000000", params)

 

 官网文档copy下来会报一个错提示没有环境包,把对应行注释掉就行。在我标注的黑体字上面

红色部分是须要根据本身信息手动修改的,我这里写了两个变量   若是不须要能够改为固定

 

而后把demo.py脚本拷贝到zabbix脚本存放路径

测试发现zabbix web端动做触发成功可是没法执行脚本接不到电话,因此我在这把Python脚本写成shell的脚本就能够正常运行了

vim demo.py:

#!/bin/bash
python /usr/local/zabbix/alertscripts/demo.py $1 $2  

 

 

到zabbix  web端  添加媒介

 

 

添加用户

添加报警媒介

 

 

添加动做

相关文章
相关标签/搜索