ํ‚ค-๊ฐ’ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ํŽธ๋ฆฌํ•ด์ง„ ๋ฐฉ๋ฒ•

ํ‚ค-๊ฐ’ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ํŽธ๋ฆฌํ•ด์ง„ ๋ฐฉ๋ฒ•

Voximplant์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํด๋ผ์šฐ๋“œ ์Šคํฌ๋ฆฝํŠธ, ์ „ํ™” ๋ฒˆํ˜ธ, ์‚ฌ์šฉ์ž, ๊ทœ์น™ ๋ฐ ํ†ตํ™” ๋Œ€๊ธฐ์—ด์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜"์˜ ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋“  ๊ฒƒ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ์œผ๋กœ ์‹œ์ž‘๋˜๋ฏ€๋กœ ๋ชจ๋“  Voximplant ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์˜ ์ง„์ž…์ ์ธ ๋‹น์‚ฌ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์˜ ์ดˆ์„์ž…๋‹ˆ๋‹ค.

์ด์ „์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์ด๋‚˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ "๊ธฐ์–ต"ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ํƒ€์‚ฌ ์„œ๋น„์Šค๋‚˜ ๋ฐฑ์—”๋“œ์— ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋กœ ์ž‘์—…ํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ด์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ฑ์ด ๊ณ„์ •์˜ ๊ฐ ์•ฑ์— ๊ณ ์œ ํ•œ ํ‚ค-๊ฐ’ ์Œ์„ ๊ธฐ์–ตํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ ๋•๋ถ„์— ์Šคํ† ๋ฆฌ์ง€ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํ† ๋ฆฌ์ง€ - ์ปท ์•„๋ž˜์— ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์•ˆ๋‚ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

๋„ˆ๋Š” ํ•„์š”ํ• ๊ฑฐ์•ผ.

  • Voximplant ๊ณ„์ •. ์—†์œผ์‹œ๋ฉด ๋‹ค์Œ์œผ๋กœ ๋“ฑ๋ก์€ ์—ฌ๊ธฐ์—์„œ ์‚ฐ๋‹ค;
  • Voximplant ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์Šคํฌ๋ฆฝํŠธ, ๊ทœ์น™ ๋ฐ ๋‹จ์ผ ์‚ฌ์šฉ์ž. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ „ํ™”๋ฅผ ๊ฑธ๊ธฐ ์œ„ํ•œ ์›น ํด๋ผ์ด์–ธํŠธ - ์›นํฐ ์‚ฌ์šฉ Phone.voximplant.com.

Voximplant ์„ค์ •

๊ณ„์ •์— ๋จผ์ € ๋กœ๊ทธ์ธ: manage.voximplant.com/auth. ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"์„ ํด๋ฆญํ•œ ๋‹ค์Œ "์ƒˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"์„ ํด๋ฆญํ•˜๊ณ  ์Šคํ† ๋ฆฌ์ง€๋ผ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ ํƒญ์œผ๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ countingCalls ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

require(Modules.ApplicationStorage);

VoxEngine.addEventListener(AppEvents.CallAlerting, async (e) => {
let r = {value: -1};

    try {
        r = await ApplicationStorage.get('totalCalls');
        if (r === null) {
            r = await ApplicationStorage.put('totalCalls', 0);
        }
    } catch(e) {
        Logger.write('Failure while getting totalCalls value');
    }

    try {
        await ApplicationStorage.put('totalCalls', (r.value | 0) + 1);
    } catch(e) {
        Logger.write('Failure while updating totalCalls value');
    }
    
    e.call.answer();
    e.call.say(`ะŸั€ะธะฒะตั‚ัั‚ะฒัƒัŽ.  ะšะพะปะธั‡ะตัั‚ะฒะพ ะฟั€ะพัˆะปั‹ั… ะทะฒะพะฝะบะพะฒ: ${r.value}. `, Language.RU_RUSSIAN_MALE);

    e.call.addEventListener(CallEvents.PlaybackFinished, VoxEngine.terminate);

});

์ฒซ ๋ฒˆ์งธ ๋ผ์ธ์€ ApplicationStorage ๋ชจ๋“ˆ์„ ์—ฐ๊ฒฐํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋กœ์ง์€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ์ „ํ™” ์•Œ๋ฆผ.

๋จผ์ € ์ดˆ๊ธฐ ๊ฐ’๊ณผ ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ €์žฅ์†Œ์—์„œ totalCalls ํ‚ค ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ๊ทธ๋Ÿฌํ•œ ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

try {
    r = await ApplicationStorage.get('totalCalls');
    if (r === null) {
        r = await ApplicationStorage.put('totalCalls', 0);
    }
}

๋‹ค์Œ์œผ๋กœ ์ €์žฅ์†Œ์˜ ํ‚ค ๊ฐ’์„ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

try {
        await ApplicationStorage.put('totalCalls', (r.value | 0) + 1);
    }

์ฐธ๊ณ  ์‚ฌํ•ญ

๊ฐ ์•ฝ์†์— ๋Œ€ํ•ด ์œ„ ๋ชฉ๋ก์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ์žฅ์•  ์กฐ์น˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์ค‘์ง€๋˜๊ณ  ๋กœ๊ทธ์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€ ์—ฌ๊ธฐ์—.

์ €์žฅ์†Œ ์ž‘์—… ํ›„ ์Šคํฌ๋ฆฝํŠธ๋Š” ์Œ์„ฑ ํ•ฉ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์‹  ์ „ํ™”์— ์‘๋‹ตํ•˜๊ณ  ์ด์ „์— ๋ช‡ ๋ฒˆ ์ „ํ™”ํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€ ํ›„์— ์Šคํฌ๋ฆฝํŠธ๋Š” ์„ธ์…˜์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ–ˆ์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ผ์šฐํŒ… ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์ƒˆ ๊ทœ์น™์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์„ startCounting์œผ๋กœ ์ง€์ •ํ•˜๊ณ  countingCalls ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๊ธฐ๋ณธ ๋งˆ์Šคํฌ(.*)๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.

ํ‚ค-๊ฐ’ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ํŽธ๋ฆฌํ•ด์ง„ ๋ฐฉ๋ฒ•
๋งˆ์ง€๋ง‰์€ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด "์‚ฌ์šฉ์ž"๋กœ ์ด๋™ํ•˜์—ฌ "์‚ฌ์šฉ์ž ๋งŒ๋“ค๊ธฐ"๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ด๋ฆ„(์˜ˆ: user1)๊ณผ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ ๋‹ค์Œ "๋งŒ๋“ค๊ธฐ"๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์›นํฐ์—์„œ ์ธ์ฆ์„ ์œ„ํ•ด ์ด ๋กœ๊ทธ์ธ-๋น„๋ฐ€๋ฒˆํ˜ธ ์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธ ์ค‘

๋งํฌ์—์„œ ์›นํฐ ์—ด๊ธฐ Phone.voximplant.com ๊ณ„์ • ์ด๋ฆ„, ์•ฑ ์ด๋ฆ„ ๋ฐ ์•ฑ์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„/์•”ํ˜ธ ์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์ธํ•œ ํ›„ ์ž…๋ ฅ ํ•„๋“œ์— ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ž…๋ ฅํ•˜๊ณ  ํ†ตํ™”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๋ฉด ํ•ฉ์„ฑ ์ธ์‚ฌ๋ง์ด ๋“ค๋ฆฝ๋‹ˆ๋‹ค!

Voximplant์˜ ๋ฉ‹์ง„ ๋ฐœ์ „์„ ๊ธฐ์›ํ•˜๋ฉฐ ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์†Œ์‹์ด ์žˆ์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค ๐Ÿ˜‰

์ถœ์ฒ˜ : habr.com

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