From 166742f22815e45e84462cbd884afb5fb63c9d1c Mon Sep 17 00:00:00 2001 From: "Md. Emtiaz Zahid" Date: Tue, 24 Feb 2026 15:17:46 +0600 Subject: [PATCH 1/2] Add Messagebird Gateway (#4) * messagebird gateway add * phpcs fix --------- Co-authored-by: Mahbub Rabbani --- assets/images/messagebird.png | Bin 0 -> 66084 bytes includes/Gateways.php | 1 + includes/Gateways/Messagebird.php | 153 ++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 assets/images/messagebird.png create mode 100644 includes/Gateways/Messagebird.php diff --git a/assets/images/messagebird.png b/assets/images/messagebird.png new file mode 100644 index 0000000000000000000000000000000000000000..752c9b93207ced89424523674f8291c6af78ff65 GIT binary patch literal 66084 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 Tayt)Y=y&q6Dh~?p8@>2HYIY6& literal 0 HcmV?d00001 diff --git a/includes/Gateways.php b/includes/Gateways.php index 91c5af0..a8aad84 100644 --- a/includes/Gateways.php +++ b/includes/Gateways.php @@ -155,6 +155,7 @@ public function all() { 'vonage' => __NAMESPACE__ . '\Gateways\Vonage', 'clickatell' => __NAMESPACE__ . '\Gateways\Clickatell', 'plivo' => __NAMESPACE__ . '\Gateways\Plivo', + 'messagebird' => __NAMESPACE__ . '\Gateways\Messagebird', ]; if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { diff --git a/includes/Gateways/Messagebird.php b/includes/Gateways/Messagebird.php new file mode 100644 index 0000000..a61a3f4 --- /dev/null +++ b/includes/Gateways/Messagebird.php @@ -0,0 +1,153 @@ +this link to get the Key from Messagebird. Follow these instructions to configure the gateway.', + 'texty' + ), + 'https://developers.messagebird.com/quickstarts/sms-overview/', + 'https://github.com/weDevsOfficial/texty/wiki/Messagebird' + ); + } + + /** + * Get the logo + * + * @return string + */ + public function logo() { + return TEXTY_URL . '/assets/images/messagebird.png'; + } + + /** + * Get the settings + * + * @return array + */ + public function get_settings() { + $creds = texty()->settings()->get( 'messagebird' ); + + return [ + 'key' => [ + 'name' => __( 'Key', 'texty' ), + 'type' => 'text', + 'value' => isset( $creds['key'] ) ? $creds['key'] : '', + 'help' => '', + ], + 'from' => [ + 'name' => __( 'From Number', 'texty' ), + 'type' => 'text', + 'value' => isset( $creds['from'] ) ? $creds['from'] : '', + 'help' => __( 'Must be a valid number associated with your Messagebird account', 'texty' ), + ], + ]; + } + + /** + * Send SMS + * + * @param string $to + * @param string $message + * + * @return WP_Error|true + */ + public function send( $to, $message ) { + $creds = texty()->settings()->get( 'messagebird' ); + + $args = [ + 'headers' => [ + 'Authorization' => 'AccessKey ' . $creds['key'], // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode + ], + 'body' => [ + 'originator' => $creds['from'], + 'recipients' => $to, + 'body' => $message, + ], + ]; + + $response = wp_remote_post( self::ENDPOINT, $args ); + $body = json_decode( wp_remote_retrieve_body( $response ) ); + + if ( 201 !== $response['response']['code'] ) { + return new WP_Error( + $body->errors[0]->code, + $body->errors ? $body->errors[0]->description : $body->errors, + $body->errors + ); + } + + return true; + } + + /** + * Validate a REST API request + * + * @param WP_REST_Request $request + * + * @return WP_Error|array + */ + public function validate( $request ) { + $creds = $request->get_param( 'messagebird' ); + + $args = [ + 'headers' => [ + 'Authorization' => 'AccessKey ' . $creds['key'], // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode + ], + 'body' => [ + 'limit' => 10, + 'offset' => 0, + 'status' => 'scheduled', + ], + ]; + + $response = wp_remote_get( self::ENDPOINT, $args ); + $body = json_decode( wp_remote_retrieve_body( $response ) ); + + $response_code = wp_remote_retrieve_response_code( $response ); + + if ( 200 !== $response_code ) { + return new WP_Error( + $body->errors[0]->code, + $body->errors ? $body->errors[0]->description : $body->errors, + $body->errors + ); + } + + return [ + 'key' => $creds['key'], + 'from' => $creds['from'], + ]; + } +} From b91b583c956c2bf6c9d79f68c040fa3297c64c19 Mon Sep 17 00:00:00 2001 From: Md Mahbub Rabbani Date: Tue, 24 Feb 2026 15:44:01 +0600 Subject: [PATCH 2/2] Upgrade MessageBird gateway to Bird API MessageBird rebranded to Bird with a new API architecture. Replace the legacy rest.messagebird.com endpoint with api.bird.com workspace/channel model. New credentials: access key, workspace ID, and channel ID. Co-Authored-By: Claude Opus 4.6 --- assets/images/bird.svg | 3 + assets/images/messagebird.png | Bin 66084 -> 0 bytes includes/Gateways.php | 2 +- includes/Gateways/Bird.php | 188 ++++++++++++++++++++++++++++++ includes/Gateways/Messagebird.php | 153 ------------------------ 5 files changed, 192 insertions(+), 154 deletions(-) create mode 100644 assets/images/bird.svg delete mode 100644 assets/images/messagebird.png create mode 100644 includes/Gateways/Bird.php delete mode 100644 includes/Gateways/Messagebird.php diff --git a/assets/images/bird.svg b/assets/images/bird.svg new file mode 100644 index 0000000..7abcd9d --- /dev/null +++ b/assets/images/bird.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/messagebird.png b/assets/images/messagebird.png deleted file mode 100644 index 752c9b93207ced89424523674f8291c6af78ff65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66084 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 Tayt)Y=y&q6Dh~?p8@>2HYIY6& diff --git a/includes/Gateways.php b/includes/Gateways.php index a8aad84..db65e92 100644 --- a/includes/Gateways.php +++ b/includes/Gateways.php @@ -155,7 +155,7 @@ public function all() { 'vonage' => __NAMESPACE__ . '\Gateways\Vonage', 'clickatell' => __NAMESPACE__ . '\Gateways\Clickatell', 'plivo' => __NAMESPACE__ . '\Gateways\Plivo', - 'messagebird' => __NAMESPACE__ . '\Gateways\Messagebird', + 'bird' => __NAMESPACE__ . '\Gateways\Bird', ]; if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { diff --git a/includes/Gateways/Bird.php b/includes/Gateways/Bird.php new file mode 100644 index 0000000..0fe98fd --- /dev/null +++ b/includes/Gateways/Bird.php @@ -0,0 +1,188 @@ +this link to get started with Bird. Follow these instructions to configure the gateway.', + 'texty' + ), + 'https://docs.bird.com/api/quickstarts/send-an-sms-message', + 'https://github.com/getdokan/texty/wiki/Bird' + ); + } + + /** + * Get the logo + * + * @return string + */ + public function logo() { + return TEXTY_URL . '/assets/images/bird.svg'; + } + + /** + * Get the settings + * + * @return array + */ + public function get_settings() { + $creds = texty()->settings()->get( 'bird' ); + + return [ + 'access_key' => [ + 'name' => __( 'Access Key', 'texty' ), + 'type' => 'text', + 'value' => isset( $creds['access_key'] ) ? $creds['access_key'] : '', + 'help' => '', + ], + 'workspace_id' => [ + 'name' => __( 'Workspace ID', 'texty' ), + 'type' => 'text', + 'value' => isset( $creds['workspace_id'] ) ? $creds['workspace_id'] : '', + 'help' => __( 'Found in your Bird dashboard workspace settings', 'texty' ), + ], + 'channel_id' => [ + 'name' => __( 'Channel ID', 'texty' ), + 'type' => 'text', + 'value' => isset( $creds['channel_id'] ) ? $creds['channel_id'] : '', + 'help' => __( 'The SMS channel ID from your Bird workspace', 'texty' ), + ], + ]; + } + + /** + * Get the API endpoint for sending messages + * + * @param string $workspace_id + * @param string $channel_id + * + * @return string + */ + private function get_endpoint( $workspace_id, $channel_id ) { + return sprintf( + '%s/workspaces/%s/channels/%s/messages', + self::API_BASE, + $workspace_id, + $channel_id + ); + } + + /** + * Send SMS + * + * @param string $to + * @param string $message + * + * @return WP_Error|true + */ + public function send( $to, $message ) { + $creds = texty()->settings()->get( 'bird' ); + $endpoint = $this->get_endpoint( $creds['workspace_id'], $creds['channel_id'] ); + + $args = [ + 'headers' => [ + 'Authorization' => 'AccessKey ' . $creds['access_key'], + 'Content-Type' => 'application/json', + ], + 'body' => wp_json_encode( [ + 'receiver' => [ + 'contacts' => [ + [ + 'identifierValue' => '+' . ltrim( $to, '+' ), + ], + ], + ], + 'body' => [ + 'type' => 'text', + 'text' => [ + 'text' => $message, + ], + ], + ] ), + ]; + + $response = wp_remote_post( $endpoint, $args ); + $response_code = wp_remote_retrieve_response_code( $response ); + $body = json_decode( wp_remote_retrieve_body( $response ) ); + + if ( 202 !== $response_code ) { + $error_message = isset( $body->errors[0]->description ) ? $body->errors[0]->description : __( 'Unknown error', 'texty' ); + $error_code = isset( $body->errors[0]->code ) ? $body->errors[0]->code : 'bird_error'; + + return new WP_Error( $error_code, $error_message, $body ); + } + + return true; + } + + /** + * Validate a REST API request + * + * @param WP_REST_Request $request + * + * @return WP_Error|array + */ + public function validate( $request ) { + $creds = $request->get_param( 'bird' ); + + $endpoint = sprintf( + '%s/workspaces/%s', + self::API_BASE, + $creds['workspace_id'] + ); + + $args = [ + 'headers' => [ + 'Authorization' => 'AccessKey ' . $creds['access_key'], + 'Content-Type' => 'application/json', + ], + ]; + + $response = wp_remote_get( $endpoint, $args ); + $response_code = wp_remote_retrieve_response_code( $response ); + $body = json_decode( wp_remote_retrieve_body( $response ) ); + + if ( 200 !== $response_code ) { + $error_message = isset( $body->errors[0]->description ) ? $body->errors[0]->description : __( 'Invalid credentials', 'texty' ); + $error_code = isset( $body->errors[0]->code ) ? $body->errors[0]->code : 'bird_error'; + + return new WP_Error( $error_code, $error_message, $body ); + } + + return [ + 'access_key' => $creds['access_key'], + 'workspace_id' => $creds['workspace_id'], + 'channel_id' => $creds['channel_id'], + ]; + } +} diff --git a/includes/Gateways/Messagebird.php b/includes/Gateways/Messagebird.php deleted file mode 100644 index a61a3f4..0000000 --- a/includes/Gateways/Messagebird.php +++ /dev/null @@ -1,153 +0,0 @@ -this link to get the Key from Messagebird. Follow these instructions to configure the gateway.', - 'texty' - ), - 'https://developers.messagebird.com/quickstarts/sms-overview/', - 'https://github.com/weDevsOfficial/texty/wiki/Messagebird' - ); - } - - /** - * Get the logo - * - * @return string - */ - public function logo() { - return TEXTY_URL . '/assets/images/messagebird.png'; - } - - /** - * Get the settings - * - * @return array - */ - public function get_settings() { - $creds = texty()->settings()->get( 'messagebird' ); - - return [ - 'key' => [ - 'name' => __( 'Key', 'texty' ), - 'type' => 'text', - 'value' => isset( $creds['key'] ) ? $creds['key'] : '', - 'help' => '', - ], - 'from' => [ - 'name' => __( 'From Number', 'texty' ), - 'type' => 'text', - 'value' => isset( $creds['from'] ) ? $creds['from'] : '', - 'help' => __( 'Must be a valid number associated with your Messagebird account', 'texty' ), - ], - ]; - } - - /** - * Send SMS - * - * @param string $to - * @param string $message - * - * @return WP_Error|true - */ - public function send( $to, $message ) { - $creds = texty()->settings()->get( 'messagebird' ); - - $args = [ - 'headers' => [ - 'Authorization' => 'AccessKey ' . $creds['key'], // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - ], - 'body' => [ - 'originator' => $creds['from'], - 'recipients' => $to, - 'body' => $message, - ], - ]; - - $response = wp_remote_post( self::ENDPOINT, $args ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( 201 !== $response['response']['code'] ) { - return new WP_Error( - $body->errors[0]->code, - $body->errors ? $body->errors[0]->description : $body->errors, - $body->errors - ); - } - - return true; - } - - /** - * Validate a REST API request - * - * @param WP_REST_Request $request - * - * @return WP_Error|array - */ - public function validate( $request ) { - $creds = $request->get_param( 'messagebird' ); - - $args = [ - 'headers' => [ - 'Authorization' => 'AccessKey ' . $creds['key'], // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - ], - 'body' => [ - 'limit' => 10, - 'offset' => 0, - 'status' => 'scheduled', - ], - ]; - - $response = wp_remote_get( self::ENDPOINT, $args ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( 200 !== $response_code ) { - return new WP_Error( - $body->errors[0]->code, - $body->errors ? $body->errors[0]->description : $body->errors, - $body->errors - ); - } - - return [ - 'key' => $creds['key'], - 'from' => $creds['from'], - ]; - } -}