PHP, Uselessfacts 및 AWS Lambda를 사용한 랜덤 팩트 음성 통화
11454 단어 awsserverlessphp
이 강좌에서 우리는 PHP 프로그램을 만들고 이를 AWS Lambda에 위탁하여 누군가가 특정 전화번호를 걸 때 터치하는 특정한 웹훅 URL을 감청할 것이다.그 다음에 프로그램은 호출자의 번호를 확인하고 무작위 사실을 텍스트에서 음성으로 바꾸어 호출자가 들을 수 있도록 한다.임의 사실은 Random Useless Facts라는 API에서 검색됩니다.
선결 조건
Serverless 현지 설치
PHP 현지 설치
Composer 현지 설치
Vonage API 계정
이 강좌를 완성하려면 Vonage API account가 필요합니다.만약 당신이 아직 없다면 sign up today 무료 신용카드로 건설을 시작할 수 있습니다.계정을 보유한 후에는 Vonage API Dashboard 상단에서 API 키와 API 기밀을 찾을 수 있습니다.
이 강좌는 가상 전화번호도 사용한다.하나를 구매하려면 숫자 > 로 이동하여 숫자를 구매한 다음 원하는 숫자를 검색하십시오.
개시하다
종속성 설치
먼저 프로젝트에 대한 디렉토리를 만든 다음 터미널에서 이 디렉토리를 탐색하고 다음 명령을 실행하여 Composer 프로젝트를 초기화해야 합니다.
composer init
이 절차를 마치면 다음 명령을 실행하여 설치에 필요한 제3자 라이브러리를 설치합니다.이러한 도서관은 다음과 같습니다.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 프로그램을 성공적으로 만들고 배치했습니다. 이 프로그램은 웹 훅을 감청하여 가상 번호가 전화를 받기를 기다리고 있습니다.
다음은 서버 함수가 없는 추가 자습서를 사용하는 링크입니다.
Reference
이 문제에 관하여(PHP, Uselessfacts 및 AWS Lambda를 사용한 랜덤 팩트 음성 통화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vonagedev/random-facts-voice-call-with-php-uselessfacts-and-aws-lambda-4n3o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)