--- - name: Send and verify SMS delivery via internet-master.cz hosts: localhost gather_facts: false vars: sms_number: "601358865" sms_username: "mikrotik" sms_password_send: "jdkotzHJIOPWhjtr32D" sms_password_recv: "jdkotzHJIOPWhjtr32D" sms_wait_seconds: 120 # Wait 2 minutes for delivery tasks: - name: Generate random test string set_fact: random_string: "mikrotik_{{ lookup('password', '/dev/null length=8 chars=ascii_letters') }}" - name: Send SMS message uri: url: "https://sms.internet-master.cz/send/?number={{ sms_number }}&message=@mikrotik@{{ random_string | urlencode }}&type=class-1&username={{ sms_username }}&password={{ sms_password_send }}" method: GET return_content: true register: send_result - name: Show send API response debug: var: send_result.content - name: Wait for SMS to be delivered pause: seconds: "{{ sms_wait_seconds }}" - name: Fetch received messages uri: url: "https://sms.internet-master.cz/receive/?username={{ sms_username }}&password={{ sms_password_recv }}" method: GET return_content: true register: recv_result - name: Parse received JSON set_fact: inbox: "{{ recv_result.json.inbox | default([]) }}" - name: Check if random string message was received set_fact: message_found: "{{ inbox | selectattr('message', 'equalto', random_string) | list | length > 0 }}" - name: Report result debug: msg: > SMS with message '{{ random_string }}' was {{ 'delivered ✅' if message_found else 'NOT delivered ❌' }}. - name: Fail if not delivered fail: msg: "Message '{{ random_string }}' not found in received inbox!" when: not message_found