رفتن به مطلب

پاسخ دهی خودکار به نظرات کاربران در بازار


امیرحسین قاسمی

ارسال‌های توصیه شده

سلام

گاهی اوقات پاسخ به تک تک نظرات کاربران ممکنه طاقت فرسا و خسته کننده باشه به خصوص اگه تعداد نظرات برنامه تون زیاد باشه. بازار اومده یه سرویسی تحت عنوان API نظرات بازار ارائه داده که باهاش میتونین تک تک نظرات رو بگیرین، آنالیز کنین و در صورت نیاز پاسخ بدین. این لینک داکیومنتش هست که در اون نحوه استفاده از api به صورت عمومی برای تمامی زبان ها توضیح داده شده اما از زدن مثال برای یه زبان برنامه نویسی خاص اجتناب شده و به همین خاطر تصمیم گرفتم کدهاشو به زبان php بنویسم و باهاتون به اشتراک بگذارم.

اول از همه باید این تابعی که نوشتم رو اضافه کنین:

function StartAutomaticallyReplyingToUserComments($request_url='https://sandoghche.cafebazaar.ir/api/v0/reviews/')
{
    $api_key_value = '';
    $confirmation = array("خوب", "عالی", "ممنون");
    $Replay = array("خوبی از خودته", "تشکر از نظرت", "ممنون از خودت که نظر دادی");
    $Decline = array("بد", "بیخود", "نصب نکنید");
    $Star = array(4, 5);
    $Email = "[email protected]";

    $handler = curl_init($request_url);
    curl_setopt($handler, CURLOPT_SSL_VERIFYPEER, TRUE);
    curl_setopt($handler, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($handler, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($handler, CURLOPT_URL, $request_url);
    curl_setopt($handler, CURLOPT_TIMEOUT, 90);
    $headers = array('Content-Type: application/json;charset=UTF-8', "CAFEBAZAAR-PISHKHAN-API-SECRET: $api_key_value");
    curl_setopt($handler, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($handler);
    curl_close($handler);

    $get_data = json_decode($response, true);
    $array = $get_data['results'];

    foreach ($array as $i => $item) {

        $mText = $array[$i]['text'];
        $mRate = $array[$i]['rate'];

        $mAccept = false;
        $mReplay = "";
        if (array_search($mRate, $Star, true) !== false && empty($array[$i]['developer_reply']) == true) {
            foreach ($confirmation as $ii => $item) {
                if (str_contains($mText, $confirmation[$ii])) {
                    $mAccept = true;
                    $mReplay = $Replay[$ii];
                    foreach ($Decline as $iii => $item) {
                        if (str_contains($mText, $Decline[$iii])) {
                            $mAccept = false;
                            break;
                        }
                    }
                    break;
                }
            }
        }


        if ($mAccept == true) {
            $body = json_encode(array('text' => $mReplay, 'email' => $Email));
            $mID = $array[$i]['id'];
            $request_url = "https://sandoghche.cafebazaar.ir/api/v0/reviews/$mID/";
            $handler = curl_init($request_url);
            curl_setopt($handler, CURLOPT_SSL_VERIFYPEER, TRUE);
            curl_setopt($handler, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($handler, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($handler, CURLOPT_URL, $request_url);
            curl_setopt($handler, CURLOPT_TIMEOUT, 90);
            curl_setopt($handler, CURLOPT_POST, TRUE);
            curl_setopt($handler, CURLOPT_POSTFIELDS, $body);
            $headers = array('Content-Type: application/json;charset=UTF-8', "CAFEBAZAAR-PISHKHAN-API-SECRET: $api_key_value");
            curl_setopt($handler, CURLOPT_HTTPHEADER, $headers);
            $response = curl_exec($handler);
            curl_close($handler);
            echo $i . '(' . $array[$i]['text'] . ") : " . $response . "<br>";
        }
    }

    StartAutomaticallyReplyingToUserComments($get_data['next']);
}

تنها قسمتی از تابع بالا که لازمه ویرایش کنین، همون 6 خط اول هست یعنی اینا:

$api_key_value = '';
$confirmation = array("خوب", "عالی", "ممنون");
$Replay = array("خوبی از خودته", "تشکر از نظرت", "ممنون از خودت که نظر دادی");
$Decline = array("بد", "بیخود", "نصب نکنید");
$Star = array(4, 5);
$Email = "[email protected]";

خب اول باید متغیر api_key_value رو مقدار دهی کنیم. برای این کار وارد پیشخان بازار میشیم و روی برنامه‌ ای که میخوایم به نظراتش پاسخ بدیم، کلیک میکنیم. سپس از منوی سمت راست صفحه، روی گزینه‌ی API پیشخان بازار کلیک میکنیم. حالا با کلیک روی گزینه‌ی "دریافت توکن جدید" در پیشخان توکن خودمون رو دریافت میکنیم و اونو برابر با متغیر api_key_value قرار میدیم.

متغیر confirmation مربوط به کلماتی هست که اگه نظر کاربر شامل یکی از اونها باشه به نظر پاسخ داده میشه.

متغیر Replay هم مربوط به پاسخ های شما هستش که باید به ترتیب متغیر confirmation باشه. یعنی اگه مقدار اول (index 0) آرایه confirmation در کامنت کاربر باشه پاسخی که براش در نظر گرفته میشه مقدار اول (index 0) آرایه Replay خواهد بود یا مثلا اگه مقدار دوم (index 1) آرایه confirmation در کامنت کاربر باشه پاسخی که براش در نظر گرفته میشه مقدار دوم (index 1) آرایه Replay خواهد بود و به همین ترتیب...

متغیر Decline مربوط به کلماتی هست که اگه نظر کاربر شامل یکی از اونها باشه از پاسخ به نظر کاربر خودداری میشه حتی اگه کامنتش شامل یکی از اعضای آرایه confirmation باشه!

در متغیر Star تعیین می کنیم که امتیاز لازم برای پاسخ دادن به نظر کاربر چقدر باشه. مثلا در تابع بالا من اومدم گفتم اگه امتیازی که کاربر به برنامه داده بود 4 یا 5 بود بیا به نظرش پاسخ بده و دیگه با نظرات پایین تر از 4 ستاره کاری نداشته باش!

به متغیر Email هم ایمیل خودتون رو بدین. طبق گفته بازار این ایمیل به کاربر نمایش داده میشه.

اینطوری هم از تابع استفاده میکنیم:

StartAutomaticallyReplyingToUserComments();

فقط ممکنه نظرات برنامه تون زیاد باشه و فرایند پاسخ دهی خودکار طول بکشه و همین باعث بشه به ارور Maximum execution time of 30 seconds exceeded برخورد کنین. برای حل این مشکل این کد رو اضافه کنین:

ini_set('max_execution_time', '0');

من در اینجا از PHP 8.1 استفاده کردم و بهتره شماهم از این نسخه استفاده کنین تا به مشکل برنخورین.

راستی حتی اگه هاست ندارین میتونین به راحتی این دستورات رو توی لوکال خودتون و با استفاده از XAMPP اجرا کنین!

هزینه استفاده از این مطلب: سه صلوات بر محمّد و خاندانش

موفق باشید:53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

۱ ساعت قبل، سید رضا گفته است:

ممنون چطوری نظرات بد رو پاسخ بدیم 

من زیاد توصیه نمی کنم چون وقتی فقط نظرات منفی رو پاسخ بدین و از پاسخ به نظرات مثبت خودداری کنین یه جوری نسبت به کاربرانی که نظر مثبتی به برنامه شما دادن بی احترامی میشه و کسایی هم که میخوان نظر بدن بیشترشون از قصد نظرات منفی درج میکنن تا بهشون پاسخ داده بشه.

اما اگه باز اصرار دارین اینطوری میتونین بهشون پاسخ بدین:

$confirmation = array("بد", "بیخود", "نصب نکنید");
$Replay = array("متاسفیم که از برنامه راضی نبودین", "متاسفیم که از برنامه راضی نبودین", "متاسفیم که از برنامه راضی نبودین");
$Decline = array("خوب", "عالی", "ممنون");
$Star = array(1);

اومدیم گفتیم به همه نظرات تک ستاره ای که حاوی یکی از اعضای آرایه confirmation (یعنی کلمات بد، بیخود و نصب نکنید) و فاقد اعضای Decline (یعنی خوب، عالی و ممنون) هست پاسخ "متاسفیم که از برنامه راضی نبودین" رو بده.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...