|
35 | 35 | $log = ''; |
36 | 36 | if (is_array($requests)) { |
37 | 37 | foreach ($requests as $key => $val) { |
38 | | - $log .= $key . ':' . $val . ' '; |
| 38 | + if (!is_array($val) && !is_object($val)) { |
| 39 | + $log .= $key . ':' . $val . ' '; |
| 40 | + } |
39 | 41 | } |
40 | 42 | _log("pushed " . $log, 2, "telnyx callback"); |
41 | 43 | } |
42 | 44 |
|
43 | | -$remote_smslog_id = $requests['sms_id']; |
44 | | -$message_status = $requests['status']; |
| 45 | +// Extract event type and payload from Telnyx v2 webhook format |
| 46 | +$event_type = isset($requests['data']['event_type']) ? $requests['data']['event_type'] : ''; |
| 47 | +$payload = isset($requests['data']['payload']) ? $requests['data']['payload'] : array(); |
| 48 | + |
| 49 | +$remote_smslog_id = isset($payload['id']) ? $payload['id'] : ''; |
| 50 | +$message_status = ''; |
| 51 | +if (isset($payload['to']) && is_array($payload['to']) && count($payload['to']) > 0) { |
| 52 | + $message_status = $payload['to'][0]['status']; |
| 53 | +} |
45 | 54 |
|
46 | | -// delivery receipt |
47 | | -if ($remote_smslog_id && $message_status && ($message_status != 'sending')) { |
| 55 | +// delivery receipt - handle message.finalized event |
| 56 | +if ($event_type == 'message.finalized' && $remote_smslog_id && $message_status) { |
48 | 57 | $db_query = "SELECT local_smslog_id FROM " . _DB_PREF_ . "_gatewayTelnyx_log WHERE remote_smslog_id='$remote_smslog_id'"; |
49 | 58 | $db_result = dba_query($db_query); |
50 | 59 | $db_row = dba_fetch_array($db_result); |
|
54 | 63 | $uid = $data['uid']; |
55 | 64 | $p_status = $data['p_status']; |
56 | 65 | switch ($message_status) { |
| 66 | + case "queued": |
| 67 | + case "sending": |
57 | 68 | case "sent": |
58 | 69 | $p_status = 1; |
59 | 70 | break; // sent |
60 | 71 | case "delivered": |
61 | 72 | $p_status = 3; |
62 | 73 | break; // delivered |
| 74 | + case "sending_failed": |
| 75 | + case "delivery_failed": |
| 76 | + case "delivery_unconfirmed": |
63 | 77 | default : |
64 | 78 | $p_status = 2; |
65 | 79 | break; // failed |
66 | 80 | } |
67 | | - _log("dlr uid:" . $uid . " smslog_id:" . $smslog_id . " messageid:" . $remote_smslog_id . " status:" . $message_status, 2, "telnyx callback"); |
| 81 | + _log("dlr uid:" . $uid . " smslog_id:" . $smslog_id . " messageid:" . $remote_smslog_id . " status:" . $message_status . " event:" . $event_type, 2, "telnyx callback"); |
68 | 82 | dlr($smslog_id, $uid, $p_status); |
69 | 83 |
|
70 | 84 | ob_end_clean(); |
|
73 | 87 | } |
74 | 88 | } |
75 | 89 |
|
76 | | -// incoming message |
77 | | -$sms_datetime = core_get_datetime(); |
78 | | -$sms_sender = $requests['from']; |
79 | | -$message = htmlspecialchars_decode(urldecode($requests['body'])); |
80 | | -$sms_receiver = $requests['to']; |
81 | | -$smsc = $requests['smsc']; |
82 | | -if ($remote_smslog_id && $message) { |
83 | | - _log("incoming smsc:" . $smsc . " message_id:" . $remote_smslog_id . " from:" . $sms_sender . " to:" . $sms_receiver . " message:[" . $message . "]", 2, "telnyx callback"); |
84 | | - $sms_sender = addslashes($sms_sender); |
85 | | - $message = addslashes($message); |
86 | | - recvsms($sms_datetime, $sms_sender, $message, $sms_receiver, $smsc); |
| 90 | +// incoming message - handle message.received event |
| 91 | +if ($event_type == 'message.received' && $remote_smslog_id) { |
| 92 | + $sms_datetime = core_get_datetime(); |
| 93 | + $sms_sender = ''; |
| 94 | + if (isset($payload['from']['phone_number'])) { |
| 95 | + $sms_sender = $payload['from']['phone_number']; |
| 96 | + } |
| 97 | + $message = isset($payload['text']) ? $payload['text'] : ''; |
| 98 | + $sms_receiver = ''; |
| 99 | + if (isset($payload['to']) && is_array($payload['to']) && count($payload['to']) > 0) { |
| 100 | + $sms_receiver = $payload['to'][0]['phone_number']; |
| 101 | + } |
| 102 | + $smsc = 'telnyx'; |
| 103 | + if ($message) { |
| 104 | + _log("incoming smsc:" . $smsc . " message_id:" . $remote_smslog_id . " from:" . $sms_sender . " to:" . $sms_receiver . " message:[" . $message . "]", 2, "telnyx callback"); |
| 105 | + $sms_sender = addslashes($sms_sender); |
| 106 | + $message = addslashes($message); |
| 107 | + recvsms($sms_datetime, $sms_sender, $message, $sms_receiver, $smsc); |
87 | 108 |
|
88 | | - ob_end_clean(); |
89 | | - echo "ACK/Telnyx"; |
90 | | - exit(); |
| 109 | + ob_end_clean(); |
| 110 | + echo "ACK/Telnyx"; |
| 111 | + exit(); |
| 112 | + } |
91 | 113 | } |
0 commit comments