PHP, Uselessfacts 및 AWS Lambda를 사용한 랜덤 팩트 음성 통화

11454 단어 awsserverlessphp
서버를 만들고 유지보수할 필요가 없는 상황에서 서비스를 실행하시겠습니까?이것은 설정된 시간 간격으로 촉발하는 함수입니까, 아니면 특정한 동작으로 이 함수를 촉발하는 함수입니까?
이 강좌에서 우리는 PHP 프로그램을 만들고 이를 AWS Lambda에 위탁하여 누군가가 특정 전화번호를 걸 때 터치하는 특정한 웹훅 URL을 감청할 것이다.그 다음에 프로그램은 호출자의 번호를 확인하고 무작위 사실을 텍스트에서 음성으로 바꾸어 호출자가 들을 수 있도록 한다.임의 사실은 Random Useless Facts라는 API에서 검색됩니다.

선결 조건

  • AAWS Account

  • Serverless 현지 설치

  • PHP 현지 설치

  • Composer 현지 설치
  • Vonage API 계정


    이 강좌를 완성하려면 Vonage API account가 필요합니다.만약 당신이 아직 없다면 sign up today 무료 신용카드로 건설을 시작할 수 있습니다.계정을 보유한 후에는 Vonage API Dashboard 상단에서 API 키와 API 기밀을 찾을 수 있습니다.
    이 강좌는 가상 전화번호도 사용한다.하나를 구매하려면 숫자 > 로 이동하여 숫자를 구매한 다음 원하는 숫자를 검색하십시오.

    개시하다


    종속성 설치


    먼저 프로젝트에 대한 디렉토리를 만든 다음 터미널에서 이 디렉토리를 탐색하고 다음 명령을 실행하여 Composer 프로젝트를 초기화해야 합니다.
    composer init
    
    이 절차를 마치면 다음 명령을 실행하여 설치에 필요한 제3자 라이브러리를 설치합니다.이러한 도서관은 다음과 같습니다.
  • 슬림 PHP 프레임
  • 슬림의 PSR-7, 우리가 필요로 하는 응답 및 요청 인터페이스
  • 검색 중 HTTP를 사용하여 실시간으로 API 요청
  • Bref는 AWS Lambda에서 PHP
  • 를 지원합니다.
  • Vonage의 PHP 클라이언트는 음성 호출이 웹훅으로 전송되는 요청을 올바르게 처리할 수 있습니다.
  • composer require slim/slim:"4.*" slim/psr7 guzzlehttp/guzzle:"^7.0" bref/bref vonage/client
    
    현재 당신은 이미 제3자 라이브러리를 설치했으니 그 중 하나를 사용할 때가 되었습니다.터미널에서 다음 명령을 실행하여 Bref 항목을 초기화하고 제공된 기본값을 모두 수락해야 합니다.
    vendor/bin/bref init
    
    이렇게 하면 두 개의 새 파일이 생성됩니다.
  • index.php 어플리케이션 코드
  • 포함
  • serverless.yml AWS
  • 에 어플리케이션 배포를 위한 구성 요구 사항 포함

    코드 작성


    코드 편집기에서 새로 만든 index.php 파일을 엽니다.이 파일의 내용을 삭제합니다. 모든 내용을 다시 쓸 것입니다.
    파일에 추가할 첫 번째 일은 우리가 이전에 설치한 제3자 라이브러리에서 사용한 클래스를 가져오는 것입니다.다음 내용을 index.php 파일에 복사합니다.
    <?php
    
    use GuzzleHttp\Client;
    use Laminas\Diactoros\Response\JsonResponse;
    use Psr\Http\Message\ResponseInterface as Response;
    use Psr\Http\Message\ServerRequestInterface as Request;
    use Slim\Factory\AppFactory;
    use Vonage\Voice\NCCO\Action\Talk;
    use Vonage\Voice\NCCO\NCCO;
    use Vonage\Voice\Webhook\Answer;
    use Vonage\Voice\Webhook\Factory;
    
    require __DIR__ . '/vendor/autoload.php';
    
    슬림 응용 프로그램을 index.php 파일에 생성하고 URI /webhooks/answer의 빈 GET 끝점을 생성해야 합니다.이렇게 하려면 파일에 다음을 추가합니다.
    $app = AppFactory::create();
    
    $app->get('/webhooks/answer', function (Request $request, Response $response, array $args) {
    
    });
    
    $app->run();
    
    잠시 후 Vonage 대시보드에 /webhooks/answer 단점을 설정하여 가상 전화번호로 통화 지시를 받을 수 있습니다.
    다음은 웹훅으로 전송된 데이터를 수신하고 from 전화번호를 분석하며 random fact generator GET 요청을 보내고, 호출 제어 대상 (NCCO) 을 만들고, 호출자에게 되돌려주는 기능을 만들어야 한다.다음 코드는 이러한 모든 기능을 구현하여 함수$app->get('/webhooks/answer'에 추가합니다.
    // Convert the contents of the `$request` sent in the `GET` request into a Voice Webhook Object.
    /** @var Answer $call */
    $call = Factory::createFromRequest($request);
    // Take the `from` phone number and add spaces so it can be read properly in the voice call
    $fromSplitIntoCharacters = implode(" ", str_split($call->getFrom()));
    
    // Create a new GuzzleHttp client ready to make a `GET` request
    $client = new Client();
    // Make a `GET` request for a random useless fact in English
    $response = $client->get('https://uselessfacts.jsph.pl/random.json?language=en');
    // Convert the response JSON into a PHP Array
    $responseArray = json_decode($response->getBody(), true);
    
    // Initialise the Call Control Object ready to take actions to return back to the caller
    $ncco = new NCCO();
    $ncco
        // Create the first Talk Action thanking the caller and reading out their number back to them
        ->addAction(
            new Talk('Thank you for calling from ' . $fromSplitIntoCharacters)
        )
        // Create the second Talk Action reading the caller their random fact.
        ->addAction(
            new Talk('Your fact is: ' . $responseArray['text'])
        );
    
    // Returns a Json Response of the NCCO containing the two Talk Actions.
    return new JsonResponse($ncco);
    

    배포 코드


    터미널의 AWS Lambda에 코드를 배치하려면 다음 명령을 실행합니다.
    serverless deploy
    
    배치가 성공하면 아래 그림과 같은 예시적인 출력을 볼 수 있습니다.그러나 serverless.yml 파일의 값에 따라 출력이 약간 다를 수 있습니다.endpoints: 섹션의 URL을 기록해 두십시오.

    응용 프로그램 만들기


    가상 전화 번호로 전화를 걸 때 어떤 노드를 요청해야 하는지 알 수 있도록 Vonage가 필요합니다.Dashboard의 '당신의 프로그램' 아래에 프로그램을 만들고 새 프로그램의 이름을 지정합니다.
    응용 프로그램에 음성 기능을 추가하고 이전 단계에서 복사한 Lambda URL을 사용하여 URL을 구성합니다.응답 URL의 경우 [paste lambda url]/webhooks/answer 및 이벤트 URL[paste lambda url]/webhooks/event을 사용합니다.
    이제 최근에 구입한 Vonage 가상 번호 옆의 Link 버튼을 클릭하여 새 애플리케이션을 전화 번호에 연결합니다.
    Vonage 가상 번호를 구매하여 Vonage 프로그램을 만들고,voice 웹hook 이벤트를 처리하는 코드를 작성했습니다.당신의 프로젝트를 테스트할 때가 됐어요!

    테스트


    프로젝트를 AWS Lambda에 배치하면 프로젝트를 테스트하려면 가상 번호로 전화를 걸고 음성을 듣고 전화번호를 읽으십시오. 그 다음은 무작위 사실입니다.

    이제 어떡하지?


    현재, AWS Lambda에 PHP 프로그램을 성공적으로 만들고 배치했습니다. 이 프로그램은 웹 훅을 감청하여 가상 번호가 전화를 받기를 기다리고 있습니다.
    다음은 서버 함수가 없는 추가 자습서를 사용하는 링크입니다.
  • Build a Basic Video Call Platform with Netlify Functions
  • Build a Serverless Eurovision Voting System with Node.js and Vonage
  • Multi-Channel Tone Analysis in PHP with Amazon Comprehend
  • 예전과 같이 어떤 문제, 건의나 아이디어가 있으면 언제든지 저희 전화Community Slack workspace로 전화하거나 저에게 직접 연락 주십시오.나는 네가 이 강좌에 대한 이해와 너의 프로젝트가 어떻게 운영되는지 듣고 싶다.

    좋은 웹페이지 즐겨찾기