Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ key-value, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ наши прилоТСния стали ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ key-value, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ наши прилоТСния стали ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅

Π’ΠΎΡ‚, ΠΊΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Voximplant, Π·Π½Π°Π΅Ρ‚ ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Β«ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сцСнарии, Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π°, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π²ΠΎΠ½ΠΊΠΎΠ². ΠŸΡ€ΠΎΡ‰Π΅ говоря, прилоТСния – это ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ камСнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° нашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, входная Ρ‚ΠΎΡ‡ΠΊΠ° Π² любоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° основС Voximplant, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ с создания прилоТСния всС ΠΈ начинаСтся.

РаньшС прилоТСния Β«Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈΒ» Π½ΠΈ дСйствия, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ сцСнарии, Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСний, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ значСния Π² сторонних сСрвисах ΠΈΠ»ΠΈ Π½Π° своСм бэкСндС. Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с local storage Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Ρ‚ΠΎ наша новая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вСсьма ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° это, Ρ‚.ΠΊ. позволяСт прилоТСниям Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния Π² вашСм Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π΅. Π Π°Π±ΠΎΡ‚Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° стала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° благодаря Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ApplicationStorage – ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ вас ΠΆΠ΄Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΏΠΎ Π΅Π³ΠΎ использованию, welcome!

Π’Π°ΠΌ понадобятся

  • Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Voximplant. Если Ρƒ вас Π΅Π³ΠΎ Π½Π΅Ρ‚, Ρ‚ΠΎ рСгистрация ΠΆΠΈΠ²Π΅Ρ‚ здСсь;
  • ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Voximplant, Π° Ρ‚Π°ΠΊΠΆΠ΅ сцСнарий, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ВсС это ΠΌΡ‹ создадим Π² этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅;
  • Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π²ΠΎΠ½ΠΎΠΊ β€“Β Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ нашим Π²Π΅Π±Ρ„ΠΎΠ½ΠΎΠΌ phone.voximplant.com.

Настройки Voximplant

Π‘Π½Π°Ρ‡Π°Π»Π° Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² свой Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚: manage.voximplant.com/auth. Π’ мСню слСва Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ», Π·Π°Ρ‚Π΅ΠΌ «НовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» ΠΈ создайтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ storage. Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сцСнарий 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, ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события CallAlerting.

Π‘ΠΏΠ΅Ρ€Π²Π° ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ со счСтчиком Π·Π²ΠΎΠ½ΠΊΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ пытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° 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 ΠΈ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ маску ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (.*).

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ key-value, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ наши прилоТСния стали ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅
ПослСднСС – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Β«ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΒ», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ», ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ имя (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, user1) ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ». Π­Ρ‚Π° ΠΏΠ°Ρ€Π° Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ понадобятся Π½Π°ΠΌ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π²Π΅Π±Ρ„ΠΎΠ½Π΅.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²Π΅Π±Ρ„ΠΎΠ½ ΠΏΠΎ ссылкС phone.voximplant.com ΠΈ Π·Π°Π»ΠΎΠ³ΠΈΠ½ΡŒΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния ΠΈ ΠΏΠ°Ρ€Ρƒ Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· прилоТСния. ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π° Π²Π²Π΅Π΄ΠΈΡ‚Π΅ любой Π½Π°Π±ΠΎΡ€ символов Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Call. Если всС Π±Ρ‹Π»ΠΎ сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π²Ρ‹ ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ синтСзированноС привСтствиС!

Π–Π΅Π»Π°Π΅ΠΌ Π²Π°ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Voximplant ΠΈ слСдитС Π·Π° новостями – их Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ πŸ˜‰

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com