๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

์•ˆ๋…•ํ•˜์„ธ์š”.

ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ์ฃผ์ œ๋กœ ํ•œ ๊ธ€์€ ๋งŽ์ง€๋งŒ ์•จ๋ฆฌ์Šค์˜ ์Šคํ‚ฌ์— ๋Œ€ํ•ด ๊ธ€์„ ์“ฐ๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†๊ณ , ๋‹จ์ผ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋„ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ Telegram ๋ด‡๊ณผ Yandex.Alice ๊ธฐ์ˆ .

๋”ฐ๋ผ์„œ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  SSL ์ธ์ฆ์„œ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ๋งŒ๋“ค๊ธฐ

๋จผ์ € Telegram ๋ด‡์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Telegram์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๊ฑฐ๊ธฐ์—์„œ BotFather ๋ด‡์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

/newbot์„ ์„ ํƒํ•˜์„ธ์š”

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

์‘๋‹ตํ•  ๋ด‡์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ ๋‹ค์Œ ๋ด‡์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ด‡์„ ์ œ์–ดํ•  ํ† ํฐ์„ ๋ฐ›๊ณ  ์ด ํ‚ค๋ฅผ ์ ์–ด๋‘๋ฉด ๋‚˜์ค‘์— ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ด‡์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์„œ๋ฒ„๋ฅผ Telegram ์„œ๋ฒ„์— ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ํ˜•์‹์˜ ๋งํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

https: //api.telegram.org/bot___ะขะžะšะ•ะ___/setWebhook?url=https://____ะŸะฃะขะฌ_ะ”ะž_ะกะšะ ะŸะ˜ะขะ___

____TOKEN___ ์ด์ „์— ๋ฐ›์€ ๋ด‡์˜ ํ† ํฐ์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

____PATH_TO_SCRIPT____ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋  ์„œ๋ฒ„์˜ ์Šคํฌ๋ฆฝํŠธ ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค(์˜ˆ: www.my_server.ru/webhook_telegram.php).

์—ฌ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. api.telegram.org ์„œ๋ฒ„๊ฐ€ ์ฐจ๋‹จ ์ค‘์ด์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œํ•œ์ด ์—†๋Š” ๊ฐ€์žฅ ์ €๋ ดํ•œ ์„œ๋ฒ„๋ฅผ ์ž„๋Œ€ํ•˜๊ณ  ์ด ์„œ๋ฒ„์˜ ์ฝ˜์†”์—์„œ ๋ช…๋ น์„ ๋‚ด๋ฆฌ์„ธ์š”.

wget ___ะŸะžะ›ะฃะงะ˜ะ’ะจะ˜ะ™ะกะฏ_ะะ”ะ ะ•ะก___

์ด์ œ Telegram ๋ด‡์ด ์ƒ์„ฑ๋˜์–ด ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

Yandex.Alisa์— ๋Œ€ํ•œ ์Šคํ‚ฌ ์ƒ์„ฑ

Yandex.Alice์— ๋Œ€ํ•œ ์Šคํ‚ฌ ์ƒ์„ฑ์œผ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค.

๊ธฐ์ˆ ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด Yandex.Dialogues ๊ฐœ๋ฐœ์ž ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Yandex.Dialogs ๊ฐœ๋ฐœ์ž ํŽ˜์ด์ง€, "๋Œ€ํ™” ๋งŒ๋“ค๊ธฐ"๋ฅผ ํด๋ฆญํ•˜๊ณ  "Alice์˜ ์Šคํ‚ฌ"์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

์Šคํ‚ฌ ์„ค์ • ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

์Šคํ‚ฌ ์„ค์ •์— ๋“ค์–ด๊ฐ€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‚ฌ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

ํ™œ์„ฑํ™” ์ด๋ฆ„์€ Alice๊ฐ€ ๋‰˜์•™์Šค๋กœ๋ถ€ํ„ฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Alice์™€ Yandex.Station ๋˜๋Š” Irbis A์™€ ๊ฐ™์€ ์—ด์ด ํฌํ•จ๋œ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹จ์–ด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Telegram๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์— ์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด Alice๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. www.my_server.ru/webhook_alice.php.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

์Šคํ‚ฌ์ด ๋งํ•  ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ, ์ €๋Š” ์•จ๋ฆฌ์Šค์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋” ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

๋ชจ๋ฐ”์ผ ์žฅ์น˜๋‚˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์ž‘์—…ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ "ํ™”๋ฉด์ด ์žˆ๋Š” ์žฅ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

๋‹ค์Œ์œผ๋กœ Alice์˜ ์Šคํ‚ฌ ์นดํƒˆ๋กœ๊ทธ ์„ค์ •์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”๋ฅผ ์œ„ํ•ด "๋ธŒ๋žœ๋“œ"๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ webmaster.yandex.ru ์„œ๋น„์Šค์—์„œ ๋ธŒ๋žœ๋“œ ์›น์‚ฌ์ดํŠธ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

์„ค์ •์ด ๋ชจ๋‘ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค.

ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ์Šคํฌ๋ฆฝํŠธ

Telegram ์Šคํฌ๋ฆฝํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ด‡๊ณผ Alice์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

include_once 'webhook_parse.php';

๋ด‡์˜ ํ† ํฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

$tg_bot_token = "_____YOUR_BOT_TOKEN_____";

๋ฐ์ดํ„ฐ ์ˆ˜์‹ :

$request = file_get_contents('php://input');
$request = json_decode($request, TRUE);

๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์ˆ˜๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

if (!$request)
{
  die();
    // Some Error output (request is not valid JSON)
}
else if (!isset($request['update_id']) || !isset($request['message']))
{
  die();
    // Some Error output (request has not message)
}
else
{
  $user_id = $request['message']['from']['id'];
  $msg_user_name = $request['message']['from']['first_name'];
  $msg_user_last_name = $request['message']['from']['last_name'];
  $msg_user_nick_name = $request['message']['from']['username'];
  $msg_chat_id = $request['message']['chat']['id'];
  $msg_text = $request['message']['text'];


  $msg_text = mb_strtolower($msg_text, 'UTF-8');


  $tokens = explode(" ", $msg_text);
}

์ด์ œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$tokens - ์ด์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ชจ๋“  ๋‹จ์–ด๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

$user_id - ์—ฌ๊ธฐ์— ์‚ฌ์šฉ์ž ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

$msg_chat_id - ๋ด‡์ด ๋ช…๋ น์„ ๋ฐ›์€ ์ฑ„ํŒ…

$msg_user_name - ์‚ฌ์šฉ์ž ์ด๋ฆ„

๋‹ค์Œ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด Parse_Tokens ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

$Out_Str = Parse_Tokens($tokens);

๊ทธ๋ฆฌ๊ณ  ์‘๋‹ต์„ ๋ณด๋‚ด์„ธ์š”:

Send_Out($user_id, $Out_Str);

Send_Out ํ•จ์ˆ˜๋Š” ๊ฐ„๋‹จํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

function Send_Out($user_id, $text, $is_end = true)
{
  global $tg_bot_token;
  if (strlen($user_id) < 1 || strlen($text) < 1) {return;}
  $json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text);
}

Yandex.Alisa์˜ ๊ธฐ์ˆ  ์Šคํฌ๋ฆฝํŠธ

์ด์ œ Alice์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. Telegram์˜ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ด‡๊ณผ Alice์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Alice์— ๋Œ€ํ•œ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

include_once 'classes_alice.php';
include_once 'webhook_parse.php';

๋ฐ์ดํ„ฐ ์ˆ˜์‹ :

$data = json_decode(trim(file_get_contents('php://input')), true);

๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์ˆ˜๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

if (isset($data['request']))
{

//original_utterance


  if (isset($data['meta']))
  {
    $data_meta = $data['meta'];
    if (isset($data_meta['client_id'])) {$client_id = $data_meta['client_id'];}
  }

  if (isset($data['request']))
  {
    $data_req = $data['request'];

    if (isset($data_req['original_utterance']))
    {
      $original_utterance = $data_req['original_utterance'];
    }


    if (isset($data_req['command'])) {$data_msg = $data_req['command'];}
    if (isset($data_req['nlu']))
    {
      $data_nlu = $data_req['nlu'];
      if (isset($data_nlu['tokens'])) {$tokens = $data_nlu['tokens'];}
//      $data_token_count = count($data_tokens);
    }
  }
  if (isset($data['session']))
  {
    $data_session = $data['session'];
    if (isset($data_session['new'])) {$data_msg_new = $data_session['new'];}
    if (isset($data_session['message_id'])) {$data_msg_id = $data_session['message_id'];}
    if (isset($data_session['session_id'])) {$data_msg_sess_id = $data_session['session_id'];}
    if (isset($data_session['skill_id'])) {$skill_id = $data_session['skill_id'];}
    if (isset($data_session['user_id'])) {$user_id = $data_session['user_id'];}
  }
}

์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

$tokens - ์ด์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ชจ๋“  ๋‹จ์–ด๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

$user_id - ์—ฌ๊ธฐ์— ์‚ฌ์šฉ์ž ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Yandex๋Š” ๊ฒŒ์‹œ๋œ ๊ธฐ์ˆ ์„ ์ง€์†์ ์œผ๋กœ ํ•‘ํ•˜๋ฏ€๋กœ ๋ฉ”์‹œ์ง€์˜ ์ „์ฒด ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฆ‰์‹œ ์ข…๋ฃŒํ•˜๋Š” ์ค„์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  if (strpos($tokens[0], "ping") > -1)     {Send_Out("pong", "", true);}

์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด Parse_Tokens ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Telegram๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

$Out_Str = Parse_Tokens($tokens);

๊ทธ๋ฆฌ๊ณ  ์‘๋‹ต์„ ๋ณด๋‚ด์„ธ์š”:

Send_Out($user_id, $Out_Str);

Send_Out ํ•จ์ˆ˜๋Š” ์—ฌ๊ธฐ์—์„œ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

function Send_Out($user_id, $out_text, $out_tts = "", $is_end = false)
{
  global $data_msg_sess_id, $user_id;

  ///// GENERATE BASE OF OUT //////
    $Data_Out = new Alice_Data_Out();
    $Data_Out->response = new Alice_Response();
    $Data_Out->session = new Alice_Session();
  ///// GENERATE BASE OF OUT End //////

  ///// OUT MSG GENERATE /////
  $Data_Out->session->session_id = $data_msg_sess_id;;
  $Data_Out->session->user_id = $user_id;

  $Data_Out->response->text = $out_text;
  $Data_Out->response->tts = $out_tts;

  if (strlen($out_tts) < 1) {$Data_Out->response->tts = $out_text;}

  $Data_Out->response->end_session = $is_end;

  header('Content-Type: application/json');
  print(json_encode($Data_Out, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT));

  die();
}

์•จ๋ฆฌ์Šค์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Parse_Tokens ์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๋Š” ์ˆœ์ „ํžˆ ์˜ˆ์‹œ์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ํ™•์ธํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function Parse_Tokens($tokens)
{
  $out = "";
  // do something with tokens //
  $out =  "Your eneter " . count($tokens) . " words: " . implode($tokens, " ");
  return $out;
}

์งˆ๋ฌธ-๋‹ต๋ณ€๋ณด๋‹ค ๋ณต์žกํ•œ ํ˜•ํƒœ์˜ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ตํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž์˜ $user_id์™€ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์˜ˆ: mysql)์— ์ €์žฅํ•˜๊ณ  ๋ถ„์„ํ•ด์•ผ ํ•œ๋‹ค. Parse_Tokens ํ•จ์ˆ˜.

์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๋ฉด ์ด๋ฏธ Telegram ๋ด‡์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Alice์˜ ๊ธฐ์ˆ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค Dialogs.yandex.ru/developerํ…Œ์ŠคํŠธ ํƒญ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๋กœ ์ด๋™ํ•˜์„ธ์š”.

๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ PHP์˜ Yandex.Alisa ๋ฐ Telegram ๋ด‡

๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ "์กฐ์ •์šฉ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์กฐ์ •์šฉ ์Šคํ‚ฌ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋‘ ๊ฐœ์˜ ๋ด‡์ด ๋™์‹œ์— ์žˆ์Šต๋‹ˆ๋‹ค.

Yandex.Dialogs ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ฌธ์„œ ์—ฌ๊ธฐ์—

github์— ๊ฒŒ์‹œ๋œ ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€