ã¯ããã«
ãã£ãããããã®æŽå²ã¯é·ããããŸãæåããŠããŸããããã¿ããã€ã³ã¿ãŒãã§ã€ã¹ããã¥ãŒã©ã«ãããã¯ãŒã¯ã®ããã«ããããã«ã€ããŠèšãããšãã§ããŸã-ãã¹ãŠã«æéããããŸãã æŽå²ã®æåŸã®ã©ãŠã³ãã§ã¯ããããã¯ã¢ãžã¢ã®ã¡ãã»ã³ãžã£ãŒãšãœãŒã·ã£ã«ãããã¯ãŒã¯ã«äººæ°ããããŸãã ã¢ãžã¢ã§å§ããŠã圌ãã¯è¥¿æŽã®ç€ŸäŒãµãŒãã¹ãåŸæãã«è¡ããŸããã 次ã«ãAPIãæ¥ãã§äœæããŠãã人ã ã¯ãããŸããŸãªæ©äŒãšãã©ãããã©ãŒã ã§ã®æœåšçãªåçé¡ã§ç«¶äºãå§ããŸããã ããã¯ãããããéçºãããšããåãã¿ã¹ã¯ã«çŽé¢ããããã³ã³ãã³ãããã³ãµãŒãã¹ãããã€ããŒããã®éåžžã®éçºè ã®ç掻ãæªå€¢ã«å€ããŸããã
äœããã®æ¹æ³ã§ã¯ã©ã€ã¢ã³ãã«å°éããå¯èœæ§ã®ããã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒã®æ°ãã«ãŠã³ãã§ããŸãããŸããåŸæ¥ã®SMSãé»åã¡ãŒã«ãããã³Webãã£ããããããŸãã 誰ããç¬èªã®APIãŸãã¯SDKãæäŸãããããããããã¹ãŠã«ã¯ç¹å¥ãªã¢ãããŒããå¿ èŠã§ãã ãããŠãåããã®ã®å€æ°ã®ç°ãªãå®è£ ãéçºããã³ãµããŒãããªãããã«ãå€ããå°ãªããäžè²«æ§ã®ããã³ãŒãã§ãã¹ãŠã管çããã®ã¯çŽ æŽãããããšã§ãã ããžãã¹ã§ã¯ãå°èŠæš¡ãªè²©å£²ãã£ãã«ã®è³ªã®é«ãã«ãã¬ããžã§ã¯ãªããããå€ãã®ãã£ãã«ã®å®éçãªã«ãã¬ããžãå¿ èŠã§ãã äžéšã®ãã£ãã«ãä»ã®ãã£ãã«ãããå€ãã®ãéãããããå Žåã§ãã ãŸãã¯ãäžéšã®ãã£ãã«ãä»ã®ãã£ãã«ãããå€ãã®æ©èœãæäŸããå Žåã
ããã§ã¯ãåããã®ã®ç°ãªãå®è£ éã§äœæ¥ãç¡éã«ã©ãã·ã¥ããããšãªããã§ããã ãå€ãã®ãã£ãã«ãã©ã®ããã«ã«ããŒããŸããïŒ å©çšå¯èœãªãœãªã¥ãŒã·ã§ã³ã®1ã€ã¯ããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã§ãã ãã¡ãããããã¯ãã¹ãŠã®åé¡ã解決ããããã§ã¯ãããŸããããå°ãªããšã粟ç¥çãªãã©ã³ã¹ãç¶æããçæ³çã«ã¯é¡§å®¢ãŸãã¯éçšè ã®ãéãç¶æããŸãã
Microsoft Bot Framework
Microsoft Bot Frameworkã¯ã1幎åã«Microsoft Build 2016ã§åããŠå°å ¥ãããŸããã ãã ãããŸã ãã¬ãã¥ãŒæ®µéã«ãããããçŸåšã®åœ¢åŒã®å€§èŠæš¡ãããžã§ã¯ãã§ããŸããŸãªçš®é¡ã®ç¹å®ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã å°ãªããšããçŸæç¹ã§ã¯æ¬çªç°å¢ã§äœ¿çšããããšã¯çµ¶å¯Ÿã«ãå§ãã§ããŸããã
ãã®ãã¬ãŒã ã¯ãŒã¯ã®ãã¹ãŠã®æ©èœãšå©ç¹ã«ã€ããŠã¯èª¬æããŸããã ããã¥ã¡ã³ããä»ã®èšäºããç°¡åã«èŠã€ããããšãã§ããŸãã ãã®è³æã®äžéšãšããŠãMicrosoft Bot Frameworkã®ãããã®å®çšçãªå®è£ ã«ã€ããŠå°ã詳ãã説æããŸãã
ãããã¯åºæ¬çã«é£ããããã«æãããããããŸãããã銎æã¿ã®ãªããã¬ãŒã ã¯ãŒã¯ã§ã¯ããã«ããã§ãããããããã§ã¯ãããŸããã ããããŒã§è¿°ã¹ãããã«ãMicrosoft Bot Frameworkã䜿çšããæãåçŽãªãããã®å®è£ ã«ã¯10åããããããŸããã ãã®èšäºã®ã³ãŒããèšè¿°ããŠãããã°ããã«ã¯å€ãã®æéãããããAzure Functionsã§å®è¡ããé©åãªãã³ãã¬ãŒããèŠã€ããã®ã«2åããããŸããã
ãªãPHPãªã®ãïŒ
ããŸããŸãªçç±ããããã®è³æã«PHPãéžæããŸããã ãŸããç§ã®ä»äºã®äž»ãªçŠç¹ã¯Webéçºã§ãããå°ãªããšããã·ã¢ã§ã¯PHPããã®åéã§æã人æ°ã®ããèšèªã§ããããã§ãã äŸã«Pythonã³ãŒããå«ããããšãèããŠããŸãããããã§ã«è¥å€§åããè³æãè€éã«ããªãããšã«ããŸããã ãããèå³æ·±ãå Žåã¯ãå¥ã®èšäºã«èšèŒã§ããŸãã 第äºã«ãMicrosoftã¯ãPHPãŸãã¯Pythonã§ããããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšãå¯èœã§ãããšäž»åŒµããŠããŸãããå®éã«ã¯ããããæ éã«ç¡èŠããããã¥ã¡ã³ããäŸãæäŸãããSDKããããŸããã ããã¯REST APIãšãã®ããã¥ã¡ã³ãã ãã§ãã éçºè ã®è¯å¿ã«é¢ããèªèãéçºè ã¯ããããã©ãã»ã©çŽ æŽããããåçŽã§ãã£ãŠããèªåã®èšèªã§ååã«ææžåãããŠããªãæè¡ãç¡èŠããå¯èœæ§ããããŸãã ä»ã®èšèªã®äŸã¯ãç¹ã«ãasync / awaitããªã©ã®å€éšæ§é ã§ãªãŒããŒããŒããããŠããå Žåã¯ãå¿ ãããèªã¿ããããšã¯éããŸããã
Azure Functionsãéžã¶çç±
Azure Functionsãéžãã çç±ã¯ãèªè ããã®äŸã®ã³ãŒããè©ŠããŠç·Žç¿ããæãç°¡åã§å®äŸ¡ãªæ¹æ³ã ããã§ãã å®éããã®è³æããæ¬æ Œçãªããããèµ·åããããã«å¿ èŠãªããšã¯ã[ Azureã«ããã〠]ãã¿ã³ãã¯ãªãã¯ããŠãã¢ããªã±ãŒã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒãããã€ãå ¥åããããšã ãã§ãã Azureã¯ãå¿ èŠãªãªãœãŒã¹ãäœæããã³æ§æããGitHubãããµã³ãã«ã³ãŒããããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³å šäœã®æéãæ¯æãå¿ èŠããªãããã«èª²éãèšå®ããŸãã å®éã«ã¯ãããããåŠçããã¡ãã»ãŒãžã«å¯ŸããŠãããããžã®çŽæ¥ã®åŒã³åºãã«å¯ŸããŠã®ã¿æ¯æãããšã«ãªããŸãã
ãŸãããµãŒããŒã¬ã¹ã¢ãŒããã¯ãã£ã䜿çšãããã€ã¯ããµãŒãã¹ã®ãããã¯ã«èå³ããããAzure Functionsã«ç²ŸéããŠããªãå Žåã¯ãããããç¥ãããã®çŽ æŽãããæ©äŒã«ãªããŸãã ãã ãããã€ã¯ããµãŒãã¹ãšãã®äžã®Azure Functionsã®åœ¹å²ã¯ãå¥ã®èšäºã®å¥ã®ãããã¯ã§ãã
å®è£
ãããšã¯å¥ã«ããã®äŸã¯æå³ããã«æãåçŽã§ãçŽç·çã§ãèªã¿ããããèŠèŠçã«æžãããŠããããšã«æ³šæããŠãã ããã ãã¡ãããäœæ¥ã³ãŒããšããŠäœ¿çšããããšã¯ã§ããŸããã çŸåšãSDK for PHPããªãããããã®äŸãã¯ã©ã¹ãšåå¥ã®é¢æ°ã§è€éã«ããããšã¯å®å šã«åé·ã§ãããèªã¿ããããšèªèãè€éã«ããŸãã
æºåãã
ãããã£ãŠãæåã«è¡ãå¿ èŠãããã®ã¯ããããèªäœãäœæããããšã§ãïŒ https : //dev.botframework.com/bots/new ãããåïŒååïŒã説æïŒèª¬æïŒãããã³URLã®ååä»ãã®ãšã€ãªã¢ã¹ïŒããããã³ãã«ïŒãäœæããŸãã ååã説æãšã¯ç°ãªãããããã®äœæåŸã«ãšã€ãªã¢ã¹ãå€æŽããããšã¯ã§ããŸããã çŸæç¹ã§ã¯ãã¡ãã»ãŒãžã³ã°ãšã³ããã€ã³ãããã£ãŒã«ãã空çœã®ãŸãŸã«ããŸããã¢ããªã±ãŒã·ã§ã³ã®èµ·ååŸã«å ¥åããŸãã
[Microsoftã¢ããªIDãšãã¹ã¯ãŒãã®ç®¡ç]ãã¿ã³ãã¯ãªãã¯ããŠãã¢ããªã±ãŒã·ã§ã³ã®èå¥åãšãã¹ã¯ãŒããäœæããŸãã IDãšãã¹ã¯ãŒãã¯ããã£ããã«ã¡ãã»ãŒãžãéä¿¡ãããšãã«ã¢ããªã±ãŒã·ã§ã³ãããããšããŠèªèšŒããããã«å¿ èŠãªã®ã§ãä¿åããŸãã [æäœãå®äºããŠããããã¬ãŒã ã¯ãŒã¯ã«æ»ã]ãã¿ã³ãã¯ãªãã¯ããŸãã
ãã®æºåéšåã¯ã»ãŒçµäºã§ãã 確èªãããã¹ãŠã®å¥çŽã®åæã確èªããŠããç»é²ããã¯ãªãã¯ããŸãã ãã¹ãŠãæ£ãããã°ãããã«ãããããäœæãããŸããããšããã¡ãã»ãŒãžã衚瀺ãããŸãã åç®äžããããã®æºåã¯å®äºã§ãã 圌ã«äŒããããšãæããããšã¯æ®ã£ãŠããŸãã
ã³ãŒã
ãŸãããããèªèšŒçšã®ã¢ããªã±ãŒã·ã§ã³IDãšãã¹ã¯ãŒããèšå®ããŸãã ããªãã¯ããããæåŸã®ã¹ãããã§æã«å ¥ããŸããã åæã«ããããã®åçãæ¿èªããããŒã¯ã³ã«ã€ããŠåãåãããURLãèšå®ããŸãã
$client_id = getenv('MicrosoftAppId'); $client_secret = getenv('MicrosoftAppPassword'); $authRequestUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
ãã®äŸã§ã¯ãç°å¢å€æ°ãããã©ã¡ãŒã¿ãŒãååŸããŸãããã³ãŒãã§çŽæ¥èšå®ã§ããŸãã
$client_id = '26XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'; $client_secret = 'CJPXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $authRequestUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
次ã«ããŠãŒã¶ãŒããã®ã¡ãã»ãŒãžã§POSTãªã¯ãšã¹ãã®æ¬æãèªã¿åããJSON圢åŒãã$ deserializedRequestActivityé åã«ãã·ãªã¢ã©ã€ãºããŸãã
$request = file_get_contents(getenv('req')); $deserializedRequestActivity = json_decode($request, true);
ãã®äŸã§ã¯ãAzure Functionsãã€ã³ããŒã§äºåæ§æãããŠããreqç°å¢å€æ°ããèŠæ±æ¬æãååŸããŸãã Azure Functionsã䜿çšããŠããªãå Žåã¯ã phpïŒ//å ¥åã¹ããªãŒã ãããªã¯ãšã¹ãæ¬æãååŸã§ããŸãã
$request = file_get_contents('php://input'); $deserializedRequestActivity = json_decode($request, true);
$ deserializedRequestActivityã«idãã£ãŒã«ããå«ãŸããå Žåãçä¿¡ãªã¯ãšã¹ããæ£ãããšèŠãªããåŠçãéå§ããŸãã ãŸããã¡ãã»ãŒãžãžã®å¿çãèš±å¯ããããŒã¯ã³ãååŸããå¿ èŠããããŸãã ããŒã¯ã³ã¯ãMicrosoft oAuthãµãŒãã¹ãžã®POSTèŠæ±ãéããŠååŸã§ããŸãã ãªã¯ãšã¹ãã®ã¹ããªãŒã ã³ã³ããã¹ãã䜿çšããã®ã¯ããã®å®è£ ã®èŠæ ããããã CURLã䜿çšã§ããããã§ãã
$authRequestOptions = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query( array( 'grant_type' => 'client_credentials', 'client_id' => $client_id, //ID 'client_secret' => $client_secret, // 'scope' => 'https://graph.microsoft.com/.default' ) ) ) );
äžèšã§æ§æãããã¹ããªãŒã ã³ã³ããã¹ããäœæããããããoAuthãµãŒãã¹ãžã®ãªã¯ãšã¹ããå®è¡ããŸãã
$authRequestContext = stream_context_create($authRequestOptions); $authResult = file_get_contents($authRequestUrl, false, $authRequestContext);
èŠæ±ã«å¯Ÿããå¿çãèªã¿åãã $ authDataé åã«éã·ãªã¢ã«åããŸãã
$authData = json_decode($authResult, true);
$ authDataã«access_tokenãã£ãŒã«ããå«ãŸããŠããå ŽåãèªèšŒãæåãããšèŠãªããåŠçãç¶è¡ããŸãã åä¿¡ããã¡ãã»ãŒãžã®ã¿ã€ããå€å¥ããçä¿¡ã¡ãã»ãŒãžã®ã¿ã€ããã¡ãã»ãŒãžã§ããå Žåã«åããŠãã¡ãã»ãŒãžãžã®å¿çã®ããã¹ããæºåããŸãã ãã®äŸã§ã¯ãä»ã®ãã¹ãŠã®ã¿ã€ãã®ã¡ãã»ãŒãžãåŠçããããã§ã¯ãããŸããããããã£ãŠãä»ã®ãã¹ãŠã®ã¿ã€ãã«å¯ŸããŠããããã«æ £ããŠããªãããšãåã«äŒããŸãã
switch ((string)$deserializedRequestActivity['type']) { case 'message': $message = 'New message is received: ' . (string)$deserializedRequestActivity['text']; break; default: $message = 'Unknown type'; break; }
å¿çããå 容ãããã£ãã®ã§ãå¿çããŒã¿ã䜿çšããŠ$ deserializedResponseActivityã®é åãäœæããåŸã§Microsoft Bot Frameworkã«è»¢éããŸãã
$deserializedResponseActivity = array( // 'type' => 'message', // 'text' => $message, //, - 'textFormat' => 'plain', // 'locale' => 'ru-RU', // ID , ( id POST- ) 'replyToId' => (string)$deserializedRequestActivity['id'], // id ( recipient->id recipient->name POST- , id name, ) 'from' => array( 'id' => (string)$deserializedRequestActivity['recipient']['id'], 'name' => (string)$deserializedRequestActivity['recipient']['name'] ), // id , , ( from->id from->name POST- ) 'recipient' => array( 'id' => (string)$deserializedRequestActivity['from']['id'], 'name' => (string)$deserializedRequestActivity['from']['name'] ), // id , ( conversation->id POST- ) 'conversation' => array( 'id' => (string)$deserializedRequestActivity['conversation']['id'] ) );
åçãäœæããã®ã§ããããéä¿¡ããæºåãããŠããŸãããã®ããã«URLãäœæããããã§è»¢éããŸãã å®éãURLã¯çä¿¡POSTèŠæ±ã®ãã©ã¡ãŒã¿ãŒããçµã¿ç«ãŠããã次ã®ããã«ãªããŸãã
https:// {activity.serviceUrl} /v3/conversations/ {activity.conversation.id} /activities/ {activity.id}
ã¢ã¯ãã£ããã£ã¯ãã¡ãã»ãŒãžãå«ãçä¿¡POSTèŠæ±ã§ãå ã»ã©$ deserializedRequestActivityé åã«éã·ãªã¢ã«åãããŠããŸãã
{activity.serviceUrl}ãrtrimã«æž¡ããŠãæåŸã®æåŸã®ã¹ã©ãã·ã¥ãé€å€ããŸããããã¯ãããã§ããå Žåãšããã§ãªãå Žåãããããã§ãã ãŸãã {activity.id}ã«ã¯urlencodeãæž¡ãå¿ èŠããããŸããããã«ã¯ãURLãäžæããŠãªã¯ãšã¹ãã劚害ããç¹æ®æåãå«ãŸããŠããããã§ãã
$responseActivityRequestUrl = rtrim($deserializedRequestActivity['serviceUrl'], '/') . '/v3/conversations/' . $deserializedResponseActivity['conversation']['id'] . '/activities/' . urlencode($deserializedResponseActivity['replyToId']);
URLã®æºåãã§ããŸãããããã§ãMicrosoft Bot Connector APIãžã®POSTèŠæ±ãæºåããåä¿¡ã¡ãã»ãŒãžãžã®å¿çãéä¿¡ããŸãã ãŸããã¹ããªãŒã ã³ã³ããã¹ããæ§æããŸãã ãªã¯ãšã¹ãã®ã¹ããªãŒã ã³ã³ããã¹ãã䜿çšããã®ã¯ããã®å®è£ ã®èŠæ ããããã CURLã䜿çšã§ããããã§ãã
$responseActivityRequestOptions = array( 'http' => array( // POST- , (token_type) (access_token) 'header' => 'Authorization: ' . $authData['token_type'] . ' ' . $authData['access_token'] . "\r\nContent-type: application/json\r\n", 'method' => 'POST', // JSON- $deserializedResponseActivity 'content' => json_encode($deserializedResponseActivity) ) );
ãããŠããã«äœæããã¹ããªãŒã ã³ã³ããã¹ãããMicrosoft Bot Connector APIãžã®æ§æãããèŠæ±ãå®è¡ããŸãã
$responseActivityRequestContext = stream_context_create($responseActivityRequestOptions); $responseActivityResult = file_get_contents($responseActivityRequestUrl, false, $responseActivityRequestContext);
ãã£ããã®ãŠãŒã¶ãŒã¯å¿çãèªã¿åãã次ã®ã¡ãã»ãŒãžã®åä¿¡ãšåŠçã«é¢ãããã°ãSTDOUTã¹ããªãŒã ã«æžã蟌ã¿ãŸãã
fwrite(STDOUT, 'New message is received: "' . (string)$deserializedRequestActivity['text'] . '"');
æã¡äžã
äžèšã®ã³ãŒãã¯GitHubã«ãããããããã³ããŒããããããäžåºŠæžãããããå¿ èŠã¯ãããŸããã ç¬èªã®ç°å¢ã«ã³ãŒãããããã€ããããAzure Functionsã®æ¢è£œã®ãã³ãã¬ãŒãã䜿çšã§ããŸãã ç¬èªã®ç°å¢ã«ã³ãŒãããããã€ããå Žåã¯ã ãããã¯ãªãã¯ããŠAzure Functionsã®éšåãã¹ãããããŠãã ãã ã
ã³ãŒããAzureã«èªåçã«å±éããã«ã¯ãããäžã®[Azureã«å±é]ãã¿ã³ãã¯ãªãã¯ããŸãã å±éãŠã£ã¶ãŒãã¯ããMicrosoft App IdããšãMicrosoft App Passwordãã®ã¿ãèŠæ±ããŸãã æºå段éã§åãåã£ããã®ãå ¥åããŠãã ããã ãã³ãã¬ãŒãã§æå®ãããååã¯ãã§ã«äœ¿çšãããŠããããããApp Nameããã£ãŒã«ãã®å€ãå¿ ãå€æŽããŠãã ããããã®ãŸãŸã«ããŠãããšããããã€ã¯å€±æããŸãã ããã«ããã€ãã®ä¹±æ°ãè¿œå ããã ãã§ãã ããã«ãå¿ èŠã«å¿ããŠãæ¢åã®ãªãœãŒã¹ã°ã«ãŒããéžæããããæ°ãããªãœãŒã¹ã°ã«ãŒããäœæã§ããŸãã ãã以å€ã®å Žåããã©ã¡ãŒã¿ãŒã¯ãã®ãŸãŸã«ããŠããã®ãæé©ã§ãã èŠçŽãèªãã§åæããŠããããè³Œå ¥ããã¯ãªãã¯ããŠãã ããã
æåŸã«ããããã€ãããã¢ããªã±ãŒã·ã§ã³ãžã®ãªã³ã¯ãååŸãããããã®æºå段éã§äœæããããã¡ãã»ãŒãžã³ã°ãšã³ããã€ã³ãããã£ãŒã«ãã«è²Œãä»ããå¿ èŠããããŸãã
ã¢ããªã±ãŒã·ã§ã³ããããã€ããããŸã§åŸ ã¡ããããã€ãããªãœãŒã¹ã°ã«ãŒãã«ç§»åããŸãã
æ°ãããããã€ãããã¢ããªã±ãŒã·ã§ã³ã®ååã§Application Servicesã€ã³ã¹ã¿ã³ã¹å ã«ç§»åããŸãã
ãã¡ãã»ãŒãžãé¢æ°ã®ååã®äžã®å·ŠåŽã§ããéçºãã¡ãã¥ãŒã«ç§»åããå³åŽã«éããŠã£ã³ããŠã®ãé¢æ°URLã®ååŸããªã³ã¯ãã¯ãªãã¯ããŸãã ãããã¢ããã«ã¯ã次ã®åœ¢åŒã®ãªã³ã¯ããããŸãã
https:// {__} .azurewebsites.net/api/messages?code= JqXXXXXXXXXXXXXXX...
codeãã©ã¡ãŒã¿ãŒã¯ãå¶çºçããã³æªæã®ããæäœããã¢ããªã±ãŒã·ã§ã³ãä¿è·ããŸãã ãã®ããŒãç¥ããªããã°ãã¢ããªã±ãŒã·ã§ã³ã匷å¶çã«åäœãããããšã¯ã§ããŸãããã€ãŸãããªã¯ãšã¹ãã§ã¢ããªã±ãŒã·ã§ã³ããªãŒããŒããŒãããŠãAzureãžã®åéã«è¿œã蟌ãããšã¯ã§ããŸããã ãããã£ãŠããã®ãã©ã¡ãŒã¿ãŒã誰ã«ãèŠããªãããã«ããŠãã ããã
ãªã³ã¯ãã³ããŒããŠããã¬ãŒã ã¯ãŒã¯ããŒã¿ã«ã®ãããã®ãªã¹ãã«æ»ãããããããããã®ç·šéã«ç§»åãããã¡ãã»ãŒãžã³ã°ãšã³ããã€ã³ãããã£ãŒã«ãã«ãããã®ç·šéïŒãŸãã¯ãAzure Functionsã䜿çšããªãã£ãå Žåã®äŸã®messages / run.phpã¹ã¯ãªããã«äŒŒããã®ïŒã貌ãä»ããŸãã
æ€èšŒãšãããã°
æ¥ãã§ããã管çããŒãžãé¢ããªãã§ãã ããã å³åŽã«ã¯ãæ°ããé»åãããã«äœããæžã蟌ãããšããWebãã£ãããŠã£ã³ããŠããããŸãã
Azure Functionsãã³ãã¬ãŒãããã³ãŒãããããã€ããå Žåãæåã®ã¡ãã»ãŒãžãžã®åçã«å€å°ã®é ããçããŠãå¿é ããå¿ èŠã¯ãããŸããã ããã¯ãApplication Servicesã€ã³ã¹ã¿ã³ã¹ã®åäœã¢ãŒãã«ãããã®ã§ãã ããšãã°ããã¹ãã£ã³ã°ã³ã¹ããåæžããããã«ããã³ãã¬ãŒãã«ã¯ãããããæ¶è²»èšç»ããå«ãŸããŠããããµãŒãã¹ã¯å¿ èŠã«å¿ããŠãªãœãŒã¹ãæ¶è²»ããŸãã ç°¡åã«èšãã°ãå®éã«å¿ èŠãªå Žåã«ã®ã¿éå§ããã³ã¹ã±ãŒãªã³ã°ãããŸãã ããã«ç°¡åã«èšãã°ããµãŒãã¹ã¯Webããã¯ãåŒã£åŒµãæš©éãæã€èª°ããåŸ æ©ãããŸã§åŸ æ©ã§ããŸãã å®è¡ããã»ã¹äžã«äœ¿çšå¯èœãªãªãœãŒã¹ãååã«ãªãå Žåãèªåçã«ã¹ã±ãŒãªã³ã°ãããŸãã ãããã£ãŠãèšç®æéãç¯çŽã§ããŸããããããããªããæ¯æãå¯äžã®ãªãœãŒã¹ã§ã¯ãªãããšã«æ³šæããŠãã ããã ã³ãŒã«ãåŠçããåŸããã°ãããããšããµãŒãã¹ã¯åã³ãã¹ãªãŒããç¶æ ã«ãªããŸãã
æ¢ã«ããã€ãã®ã¡ãã»ãŒãžããããã«éä¿¡ããŠããããããããå¿çãåä¿¡ããŠââããªãå Žåã¯ããŸãã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ã«ã¢ã¯ã»ã¹ããŸãã ãµãŒãã¹ã³ãŒã«ãã°ïŒSTDOUTã¹ããªãŒã ããã®ããŒã¿ãå«ãïŒãšã³ãŒããã¹ãããŒã«ããããŸãã
ããã©ã«ãã§ã¯ãã³ãŒãã¯ç¶ç¶çãããã€ã¡ã³ãã¢ãŒãã§GitHubã®ãµã³ãã«ãªããžããªã«ãªã³ã¯ãããŸãã ãããã£ãŠãã³ã³ãœãŒã«ã§ã¯ãèªã¿åãå°çšã³ãŒãã®å¯çšæ§ã«é¢ããèŠåã衚瀺ãããŸãã ã³ãŒããå€æŽããã«ã¯ãç¶ç¶çãããã€ã¡ã³ããå®å šã«ç¡å¹ã«ãããããªããžããªãè€è£œããŠãµãŒãã¹ããªã³ã¯ããå¿ èŠããããŸãã ã³ã³ãœãŒã«ã¡ãã¥ãŒãããã¢ããªã±ãŒã·ã§ã³æ©èœãã©ã¡ãŒã¿ãŒãã®å·ŠåŽã«ç§»åãããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã®èšå®ããã¿ã³ãã¯ãªãã¯ããå Žåã¯ããã®äž¡æ¹ãè¡ãããšãã§ããŸãã
ãã£ã³ãã«æ¥ç¶
ããã©ã«ãã§ã¯ãSkypeãšWebãã£ããã¯ãããã«æ¥ç¶ãããŸãã ããã«ãTelegramãSlackãªã©ã®ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒãšãé»åã¡ãŒã«ãŸãã¯SMSãã£ãã«ã®äž¡æ¹ãæ¥ç¶ãããŠããŸãã ãŸããç¬èªã®ãã£ããã¢ããªã±ãŒã·ã§ã³ãŸãã¯ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒã䜿çšã§ããREST APIãã€ã¬ã¯ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã ãã¹ãŠã®è¿œå ãã£ãã«ã®èšå®ã«ã¯è©³çŽ°ãªæ瀺ã䌎ããŸãããååãšããŠåé¡ãåŒãèµ·ããããšã¯ãªãããããããã®æé ã®è©³çŽ°ã«é²ãçç±ã¯ããã«ã¯ãããŸããã
ãã®äŸã®ãããã®ãã¢ãã¬ã¹ãšå€èŠ³ãïŒ
- Telegram @Azure_Func_PHP_Bot
- ãŠã§ããã£ãã
ãããã«
ãã€ã¯ããœãããéåžžã«é·ãéèªç¶ãªã€ã³ã¿ãŒãã§ã€ã¹ã«åãçµãã§ããã®ã¯ç§å¯ã§ã¯ãããŸããããçŸæç¹ã§ã¯ããã以äžã§ã¯ãªãã«ããŠããååããã確ãã«æåããŠããŸãã ç§ã®æèŠã§ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ã¯ããã®çŽ æŽãããäŸã§ãã æ¯èŒçæå°éã®åŽåã§ãæãåºããã£ãã«ã«ããŒã®1ã€ãæäŸããŸãã ããã«ããã®æ©èœã¯ããã¹ãŠã®ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒããã³ãã€ã¬ã¯ããã£ããã«ãŒã ã«å ±éã®æ©èœã®äœ¿çšã«éå®ãããŸããã Microsoft Bot Frameworkã䜿çšãããšãç¹å®ã®ã¡ãã»ã³ãžã£ãŒã«åºæã®æ©èœã䜿çšããããã°ã«ãŒããã£ããã§åºæã®ããžãã¯ã䜿çšãããã§ããŸãã ãã¡ããã圌ã¯å¯äžã®ãã®ã§ã¯ãããŸããã誰ããããã«ã€ããŠç°ãªãæèŠãæã£ãŠãããããããŸããã
ãã®èšäºã®ç®çïŒé©åãªããŒã«ãåããWebéçºè ããè¿œå ã®ã³ã¹ããšåŽåããããã«æåã®ããããäœæããæ¹æ³ã説æããããšã§ãã ãããŠãããã§å°ãªããšãè©ŠããŠã¿ãã®ã«ååã§ããããšãé¡ã£ãŠããŸãã
ããããããã¯ééããªãããããã顧客ã«ä»»ããã«ã¯ååã§ã¯ãããŸããã èªç¶ãªã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠè©±ããšãã¯ããŠãŒã¶ãŒãšã®å¯Ÿè©±ã®åœ¢åŒã ãã§ãªãããŠãŒã¶ãŒããã®å¯Ÿè©±ãã©ã®ããã«æããããšããããšãæå³ããŸããããã¯åãUXã§ãã å®è·µã瀺ãããã«ããŠãŒã¶ãŒã¯å®éã«ã¯ãã©ã€ã³ãã³ãã®ã¿ãèªèããåäžã®è³ªåã«çããããšãã§ããªãããããšéä¿¡ããããšã奜ã¿ãŸããã ãã€ã¯ããœããã«ã¯ããã®åé¡ã«å¯Ÿããéåžžã«ãšã¬ã¬ã³ããªMicrosoft Cognitive Servicesãœãªã¥ãŒã·ã§ã³ããããŸãã
Microsoft Cognitive ServicesãšNatural Speechã¯ããã®èšäºã®ãããã¯ãç¶ç¶ã§ããéåžžã«å€§ããéèŠãªéšåã§ãã ããããæåã«ãWebéçºã®ã³ã³ããã¹ãã§ãããããªãã«ãšã£ãŠã©ãã»ã©èå³æ·±ããèãããã®ã§ããïŒ ããããäžé£ã®èšäºãäœæãã䟡å€ã¯ãããŸããïŒ å°æ¥çã«ã©ã®èšèªãèŠããã§ããïŒ
é¢é£ãªã³ã¯
- GitHubãµã³ãã«ãœãŒã¹ã³ãŒã
- Microsoft Bot Frameworkããã¥ã¡ã³ã
- Azure Functionsã®ããã¥ã¡ã³ã
- Azureã30æ¥éç¡æã§äœ¿çšãã