Server IP : 85.214.239.14 / Your IP : 3.135.198.91 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/community/general/plugins/modules/ |
Upload File : |
#!/usr/bin/python # -*- coding: utf-8 -*- # Copyright (c) 2016, Jonathan Mainguy <jon@soh.re> # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later # # basis of code taken from the ansible twillio and nexmo modules from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = ''' --- module: catapult short_description: Send a sms / mms using the catapult bandwidth api description: - Allows notifications to be sent using sms / mms via the catapult bandwidth api. extends_documentation_fragment: - community.general.attributes attributes: check_mode: support: none diff_mode: support: none options: src: type: str description: - One of your catapult telephone numbers the message should come from (must be in E.164 format, like C(+19195551212)). required: true dest: type: list elements: str description: - The phone number or numbers the message should be sent to (must be in E.164 format, like C(+19195551212)). required: true msg: type: str description: - The contents of the text message (must be 2048 characters or less). required: true media: type: str description: - For MMS messages, a media url to the location of the media to be sent with the message. user_id: type: str description: - User Id from Api account page. required: true api_token: type: str description: - Api Token from Api account page. required: true api_secret: type: str description: - Api Secret from Api account page. required: true author: "Jonathan Mainguy (@Jmainguy)" notes: - Will return changed even if the media url is wrong. - Will return changed if the destination number is invalid. ''' EXAMPLES = ''' - name: Send a mms to multiple users community.general.catapult: src: "+15035555555" dest: - "+12525089000" - "+12018994225" media: "http://example.com/foobar.jpg" msg: "Task is complete" user_id: "{{ user_id }}" api_token: "{{ api_token }}" api_secret: "{{ api_secret }}" - name: Send a sms to a single user community.general.catapult: src: "+15035555555" dest: "+12018994225" msg: "Consider yourself notified" user_id: "{{ user_id }}" api_token: "{{ api_token }}" api_secret: "{{ api_secret }}" ''' RETURN = ''' changed: description: Whether the api accepted the message. returned: always type: bool sample: true ''' import json from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.urls import fetch_url def send(module, src, dest, msg, media, user_id, api_token, api_secret): """ Send the message """ AGENT = "Ansible" URI = "https://api.catapult.inetwork.com/v1/users/%s/messages" % user_id data = {'from': src, 'to': dest, 'text': msg} if media: data['media'] = media headers = {'User-Agent': AGENT, 'Content-type': 'application/json'} # Hack module params to have the Basic auth params that fetch_url expects module.params['url_username'] = api_token.replace('\n', '') module.params['url_password'] = api_secret.replace('\n', '') return fetch_url(module, URI, data=json.dumps(data), headers=headers, method="post") def main(): module = AnsibleModule( argument_spec=dict( src=dict(required=True), dest=dict(required=True, type='list', elements='str'), msg=dict(required=True), user_id=dict(required=True), api_token=dict(required=True, no_log=True), api_secret=dict(required=True, no_log=True), media=dict(default=None, required=False), ), ) src = module.params['src'] dest = module.params['dest'] msg = module.params['msg'] media = module.params['media'] user_id = module.params['user_id'] api_token = module.params['api_token'] api_secret = module.params['api_secret'] for number in dest: rc, info = send(module, src, number, msg, media, user_id, api_token, api_secret) if info["status"] != 201: body = json.loads(info["body"]) fail_msg = body["message"] module.fail_json(msg=fail_msg) changed = True module.exit_json(changed=changed) if __name__ == '__main__': main()