ارسال کد تایید OTP بله با افزونه دیجیتس وردپرس

ارسال کد تایید OTP بله با افزونه دیجیتس وردپرس
ارسال کد تایید OTP بله با افزونه دیجیتس وردپرس

یکی از بخش‌های رایگانی که پیامرسان بله برای کسب و کارها به وجود آورده است امکان ارسال کدتایید OTP به صورت رایگان می‌باشد. در این نوشته با استفاده از افزونه دیجیتس این عملیات را انجام خواهیم داد.

 

ارسال کدتایید OTP با پیام‌رسان بله در وردپرس

با کد زیر می‌توانید OTP افزونه Digits را پس از ارسال موفق پیامک، از طریق سرویس سفیر برای کاربر در بله نیز ارسال کنید.

کد زیر را در فایل functions.php قالب فعال سایت وردپرسی خود اضافه کنید. دقت کنید قبل از انجام اینکار باید افزونه‌ی دیجیتس Digits را در سایت وردپرسی خود نصب کرده باشید:

add_filter(
    'digit_send_message_result',
    'my_send_digits_otp_to_bale_after_sms',
    10,
    8
);
function my_send_digits_otp_to_bale_after_sms(
    $result,
    $gateway,
    $country_code,
    $mobile,
    $message,
    $otp,
    $flag_1 = false,
    $flag_2 = false
) {
    if ($result) {
        my_send_digits_otp_to_bale(
            $country_code,
            $mobile,
            $message,
            $otp,
            $flag_1,
            $flag_2
        );
    }
    return $result;
}
function my_send_digits_otp_to_bale(
    $country_code,
    $mobile,
    $message,
    $otp,
    $flag_1 = false,
    $flag_2 = false
) {
    $country_code = preg_replace('/[^0-9]/', '', (string) $country_code);
    $mobile       = preg_replace('/[^0-9]/', '', (string) $mobile);
    $otp          = preg_replace('/[^0-9]/', '', (string) $otp);
    if ($otp === '' || strlen($otp) < 4 || strlen($otp) > 10) {
        return;
    }
    if (substr($mobile, 0, 2) === '98') {
        $phone_number = $mobile;
    } else {
        $mobile = ltrim($mobile, '0');
        $phone_number = $country_code . $mobile;
    }
    if (
        substr($phone_number, 0, 2) !== '98' ||
        strlen($phone_number) !== 12
    ) {
        return;
    }
    $duplicate_key = 'my_bale_otp_' . md5(
        $phone_number . '|' . $otp
    );
    if (get_transient($duplicate_key)) {
        return;
    }
    set_transient($duplicate_key, 1, 60);
    $request_body = array(
        'request_id'  => wp_generate_uuid4(),
        'bot_id'      => (int) MY_BALE_BOT_ID,
        'phone_number' => $phone_number,
        'message_data' => array(
            'otp_message' => array(
                'otp' => $otp,
            ),
        ),
    );
    $response = wp_remote_post(
        'https://safir.bale.ai/api/v3/send_message',
        array(
            'timeout' => 8,
            'headers' => array(
                'api-access-key' => MY_BALE_API_ACCESS_KEY,
                'Content-Type'   => 'application/json',
            ),
            'body' => wp_json_encode($request_body),
        )
    );
    if (is_wp_error($response)) {
        delete_transient($duplicate_key);

        error_log(
            'Bale OTP connection failed: ' .
            $response->get_error_message()
        );

        return;
    }
    $status_code = wp_remote_retrieve_response_code($response);
    $response_data = json_decode(
        wp_remote_retrieve_body($response),
        true
    );
    if (
        $status_code < 200 ||
        $status_code >= 300 ||
        empty($response_data['message_id'])
    ) {
        delete_transient($duplicate_key);

        error_log(
            'Bale OTP failed. HTTP status: ' .
            $status_code
        );
    }
}

سپس قطعه کد زیر را در فایل wp-config.php سایت وردپرس خود قرار دهید:

define('MY_BALE_API_ACCESS_KEY', 'test');
define('MY_BALE_BOT_ID', 1234);

مقدارهای YOUR_API_ACCESS_KEY و MY_BALE_BOT_ID را با اطلاعات دریافتی از پنل کسب‌وکار بله جایگزین کنید. کلید API را در سایت یا آموزش عمومی منتشر نکنید.

 

اگر در ارتباط با آموزش بالا سوالی دارید در بخش نظرات این نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]