Laravel을 사용하여 WhatsApp 메시지 전송 방법

우리가 좋아하는 두 가지를 말하자면 Whats App 메시지와 Laravel 프레임워크이다.그것들을 한데 섞어라.뭐 공부 해요?핸드폰 재미있어요!
이 강좌는 Whats App 메시지를 보내고 응답하는 Laravel 프로그램을 만드는 방법을 보여 줍니다.
필요한 사항:
  • PHP 개발 플랫폼(Laravel 8은 PHP 7.3 이상 필요)
  • WhatsApp 모바일에서
  • Vonage API 계정


    이 강좌를 완성하려면 Vonage API account 이 필요합니다.만약 당신이 아직 없다면, 당신은 무료 신용카드로 건설을 시작할 수 있습니다.
    계정이 있으면 sign up today 상단에서 API 키 및 API 기밀을 찾을 수 있습니다.

    Vonage API 대시보드 실행 코드


    이 항목은 GitHub 에 있으므로 계속 컴퓨터에 저장소를 복제하십시오.
    이 프로젝트에 필요한 의존 항목을 가져오려면 명령composer install을 실행합니다.
    이 응용 프로그램은 phpdotenv 라이브러리를 사용하여 개발 플랫폼에서의 설정을 관리한다.파일.env.example.env로 복사하고 필요에 따라 파일을 편집합니다.특히, Vonage 계정을 연결하기 위해 파일 끝에 있는 NEXMO_API_KEYNEXMO_API_SECRET 줄을 업데이트해야 합니다(우리는 과거에 Nexmo라고 불렸는데, 낡은 습관은 고치기 어렵습니다!)
    응용 프로그램이 준비되었습니다!다음부터 시작합니다.
    php artisan serve
    
    기본적으로 이것은 포트 8000에서 응용 프로그램을 실행합니다.계속하기 전에 nexmo-community/laravel-messages 에 Laravel 홈페이지가 있는지 확인하십시오.
    http://localhost:8000

    Ngrok 설정


    응용 프로그램은 양방향 메시지 전달 통신을 위해 전송된 Webhook을 수신할 수 있어야 하기 때문에 공공 URL이 개발 플랫폼에 접근할 수 있도록 허용하는 방법이 필요하다.나는 보통 로 이걸 만든다.이것은 매우 좋은 공구다.
    Ngrok 터널을 포트 8000(또는 응용 프로그램을 실행하는 모든 포트)으로 시작합니다.
    ngrok http 8000
    
    이렇게 하면 터미널 콘솔이 시작되므로 다음과 같이 보입니다.
    Ngrok
    [전송] https URL을 복사합니다.Vonage Message API 샌드박스를 구성하기 위해 곧 필요할 것입니다.브라우저에서 이 URL을 요청하고 이전과 같은 Laravel 로그인 페이지를 확인하여 모든 연결을 확인할 수도 있습니다.

    메시지 샌드박스 구성


    전송된 WhatsApp 메시지를 응용 프로그램으로 지정하려면 에서 구성해야 합니다."메시지와 스케줄링"에서 "샌드박스"를 누르면 오늘 메시지 API 샌드박스를 사용하여 프레젠테이션을 할 것입니다. 그러나 WhatsApp 업무 계정이 있다면, 샌드박스나 화이트리스트 프로세스가 없는 사용자에게 같은 방법으로 메시지를 보낼 수 있습니다.
    dashboard
    QR코드를 스캔하거나 표시된 숫자에 신기한 문자를 보내면 전화번호를 샌드박스에 추가합니다.나는 왜 내가'auth method'라는 신기한 단어를 이렇게 좋아하는지 모르겠지만, 그것은 정말 신기해 보인다!

    웹 훅을 설정할 때가 되었습니다. 더 빨리ngrok 컨트롤러에서 URL을 복사해야 합니다.
  • 입구는 [url you copied earlier]/webhooks/inbound
  • 상태는 [url you copied earlier]/webhooks/status
  • 여기서'저장'누르는 거 잊지 마세요!이것은 마땅히 해야 할 것보다 나를 더 많이 걸어 넘어뜨린 것 같다.

    코드 내부


    이 응용 프로그램에 설정된 다양한 루트와 메시지 API와 어떻게 상호작용하는지 살펴봅시다.

    Laravel에서 보내기


    이 응용 프로그램을 부터 사용하면 전화번호를 추가하고 자신에게 메시지를 보낼 수 있습니다.

    Note that the number needs to be in the international (E.164) format without a leading +. So for US numbers, start with 1 and then add the full number with area code. For the UK, start with 44 and then add the whole number without the leading 0.


    다음은 양식을 커밋할 때 발생하는 상황입니다.
    // in routes/web.php
    
    Route::post('/message', function(Request $request) {
        // TODO: validate incoming params first!
    
        $url = "https://messages-sandbox.nexmo.com/v0.1/messages";
        $params = ["to" => ["type" => "whatsapp", "number" => $request->input('number')],
            "from" => ["type" => "whatsapp", "number" => "14157386170"],
            "message" => [
                "content" => [
                    "type" => "text",
                    "text" => "Hello from Vonage and Laravel :) Please reply to this message with a number between 1 and 100"
                ]
            ]
        ];
        $headers = ["Authorization" => "Basic " . base64_encode(env('NEXMO_API_KEY') . ":" . env('NEXMO_API_SECRET'))];
    
        $client = new \GuzzleHttp\Client();
        $response = $client->request('POST', $url, ["headers" => $headers, "json" => $params]);
        $data = $response->getBody();
        Log::Info($data);
    
        return view('thanks');
    });
    
    이 루트는 Guzzle을 사용하여 POST 요청을 메시지 샌드박스로 보냅니다. 인증서가 정확하고 제공된 전화번호가 프로그램의 화이트리스트에 포함되면 여기에서 정의할 수 있는 메시지를 보냅니다.이 메시지는 사용자에게 회답을 알려 줍니다. 다음은 코드를 보여 줍니다.

    http://localhost:8000/messages WhatsApp 메시지 수신 및 응답


    대시보드에 Webhook을 설정하고 Ngrok 터널을 실행하면 로컬 개발 프로그램에서 전송된 Whats App 메시지를 받을 수 있습니다.만약 당신이 이미 숫자를 제공하는 도전에 대답했다면, 당신은 다음에 무슨 일이 일어날지 알고 있습니다
    코드는 다음과 같습니다.
    // in routes/web.php
    
    Route::post('/webhooks/inbound', function(Request $request) {
        $data = $request->all();
    
        $text = $data['message']['content']['text'];
        $number = intval($text);
        Log::Info($number);
        if($number > 0) {
            $random = rand(1, 8);
            Log::Info($random);
            $respond_number = $number * $random;
            Log::Info($respond_number);
            $url = "https://messages-sandbox.nexmo.com/v0.1/messages";
            $params = ["to" => ["type" => "whatsapp", "number" => $data['from']['number']],
                "from" => ["type" => "whatsapp", "number" => "14157386170"],
                "message" => [
                    "content" => [
                        "type" => "text",
                        "text" => "The answer is " . $respond_number . ", we multiplied by " . $random . "."
                    ]
                ]
            ];
            $headers = ["Authorization" => "Basic " . base64_encode(env('NEXMO_API_KEY') . ":" . env('NEXMO_API_SECRET'))];
    
            $client = new \GuzzleHttp\Client();
            $response = $client->request('POST', $url, ["headers" => $headers, "json" => $params]);
            $data = $response->getBody();
        }
        Log::Info($data);
    });
    
    이 예시는 프로그램이 실행하고자 하는 작업이 완전히 아닐 수도 있지만, 이것은 당신이 필요로 하는 이동 부분을 포함하고 있습니다!전송된 웹 훅이 도착했습니다. 데이터를 캡처하고 메시지 내용을 정수로 읽으려고 합니다.우리는 무작위로 생성된 숫자로 재미있는 수학 연산을 하였으며, 첫 번째 코드 예시처럼 사용자에게 회답을 보냈다.

    You could also use the Laravel HTTP Client in place of Guzzle if you’re more familiar with that. The Laravel HTTP Client is a wrapper for Guzzle.


    상태 업데이트


    저희가 예전에 설정한 웹훅 상태 기억나세요?메시지 제출 (Vonage에서 WhatsApp으로 전송), 배달 (사용자의 장치에 도착), 읽기 (사용자가 메시지를 열 때) 와 같은 메시지 관련 이벤트가 이 노드에 전달됩니다.이 프로그램은 그것들에 대해 많이 하지 않지만, 접근할 수 있고, 그것들에 응답할 수 있는 것은 매우 좋다.
    상태 단점도 디버깅에 매우 편리하다.예제 응용 프로그램의 라우팅은 다음과 같습니다.
    // in routes/web.php
    
    Route::post('/webhooks/status', function(Request $request) {
        $data = $request->all();
        Log::Info($data);
    });
    
    그래서 모든 사건의 발생만 기록한다.디버깅 문제에서 로그 기록은 매우 가치가 있습니다!기본적으로, 이 로그를 storage/logs/laravel.log 에서 찾을 수 있습니다. 이 프로그램을 개발할 때, 이 파일에서 무슨 일이 일어났는지 주목할 필요가 있습니다!

    핸드폰이 주는 즐거움


    만약 네가 아직 해 본 적이 없다면, 계속해서 너의 응용 프로그램으로 Whats App 채팅을 즐겨라.

    오늘의 예는 간단하지만 Whats App과 Laravel을 배우는 데 도움이 되었으면 합니다.우리는 당신이 무엇을 건설했는지 매우 알고 싶으니, 우리에게 알려 주십시오. 물론, 문제가 있으면 언제든지 우리에게 연락해 주십시오.

    추가 리소스

  • GitHub 재구매:
  • 저희가 Twitch Stream에서 이걸 구축한 날: https://github.com/nexmo-community/laravel-messages
  • 메시지 샌드박스 문서: https://youtu.be/aV4IW3v-CTw
  • Laravel 응용 프로그램을 다른 Vonage API와 통합하는 데 사용되는 nexmo-laravel 라이브러리https://developer.nexmo.com/messages/concepts/messages-api-sandbox
  • 게시물https://github.com/Nexmo/nexmo-laravel이 먼저 How to Send WhatsApp Messages With Laravel에 올라왔다.

    좋은 웹페이지 즐겨찾기