{"id":53015,"date":"2019-11-21T00:00:00","date_gmt":"2019-11-20T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee"},"modified":"2020-02-18T14:00:51","modified_gmt":"2020-02-18T11:00:51","slug":"hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee","title":{"rendered":"Almacenamiento key-value, o c\u00f3mo nuestras aplicaciones se volvieron m\u00e1s convenientes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/Voximplant\/blog\/476452\/\"><img decoding=\"async\" alt=\"Almacenamiento key-value, o c\u00f3mo nuestras aplicaciones se volvieron m\u00e1s convenientes\" src=\"\/wp-content\/uploads\/2019\/11\/686d1669d32a1fb5c5a42cf6c068b19b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Quien desarrolla en Voximplant sabe sobre el concepto de \u00abaplicaciones\u00bb, que conectan entre s\u00ed los escenarios en la nube, n\u00fameros de tel\u00e9fono, usuarios, reglas y colas de llamadas. En otras palabras, las aplicaciones son la piedra angular del desarrollo en nuestra plataforma, el punto de entrada a cualquier soluci\u00f3n basada en Voximplant, ya que todo comienza con la creaci\u00f3n de una aplicaci\u00f3n.<\/p>\n<p>Antes, las aplicaciones \u00abno recordaban\u00bb ni las acciones que llevaban a cabo los escenarios, ni los resultados de los c\u00e1lculos, por lo que los desarrolladores se ve\u00edan obligados a almacenar valores en servicios externos o en su propio backend. Si alguna vez has trabajado con el almacenamiento local en el navegador, nuestra nueva funcionalidad es bastante similar, ya que permite a las aplicaciones recordar pares de \u00abclave-valor\u00bb que son \u00fanicos para cada aplicaci\u00f3n en tu cuenta. El funcionamiento del almacenamiento se ha hecho posible gracias a un nuevo m\u00f3dulo <noindex><a rel=\"nofollow\" href=\"https:\/\/voximplant.com\/docs\/references\/voxengine\/applicationstorage\">ApplicationStorage<\/a><\/noindex> \u2013 a continuaci\u00f3n, encontrar\u00e1s una breve gu\u00eda sobre su uso, \u00a1bienvenido!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Necesitar\u00e1s<\/h2>\n<p><\/p>\n<ul>\n<li>una cuenta de Voximplant. Si no tienes una, <noindex><a rel=\"nofollow\" href=\"https:\/\/voximplant.com\/sign-up\/\">el registro est\u00e1 aqu\u00ed<\/a><\/noindex>;<\/li>\n<li>una aplicaci\u00f3n de Voximplant, as\u00ed como un escenario, una regla y un usuario. Crearemos todo esto en este tutorial;<\/li>\n<li>un cliente web para hacer la llamada \u2013 utilizaremos nuestro tel\u00e9fono web <noindex><a rel=\"nofollow\" href=\"https:\/\/phone.voximplant.com\/\">phone.voximplant.com<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Configuraciones de Voximplant<\/h2>\n<p>\nPrimero, inicia sesi\u00f3n en tu cuenta: <noindex><a rel=\"nofollow\" href=\"https:\/\/manage.voximplant.com\/auth\">manage.voximplant.com\/auth<\/a><\/noindex>. En el men\u00fa de la izquierda, haz clic en \u00abAplicaciones\u00bb, luego en \u00abNueva aplicaci\u00f3n\u00bb y crea una aplicaci\u00f3n con el nombre storage. Entra en la nueva aplicaci\u00f3n, cambia a la pesta\u00f1a \u00abEscenarios\u00bb, para crear el escenario countingCalls con el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"javascript\">require(Modules.ApplicationStorage);\n\nVoxEngine.addEventListener(AppEvents.CallAlerting, async (e) =&gt; {\nlet r = {value: -1};\n\n    try {\n        r = await ApplicationStorage.get('totalCalls');\n        if (r === null) {\n            r = await ApplicationStorage.put('totalCalls', 0);\n        }\n    } catch(e) {\n        Logger.write('Error al obtener el valor de totalCalls');\n    }\n\n    try {\n        await ApplicationStorage.put('totalCalls', (r.value | 0) + 1);\n    } catch(e) {\n        Logger.write('Error al actualizar el valor de totalCalls');\n    }\n    \n    e.call.answer();\n    e.call.say(`Bienvenido. Cantidad de llamadas anteriores: ${r.value}. `, Language.RU_RUSSIAN_MALE);\n\n    e.call.addEventListener(CallEvents.PlaybackFinished, VoxEngine.terminate);\n\n});<\/code><\/pre>\n<p>\nLa primera l\u00ednea conecta el m\u00f3dulo ApplicationStorage, mientras que la l\u00f3gica restante se coloca en el manejador de eventos <noindex><a rel=\"nofollow\" href=\"https:\/\/voximplant.com\/docs\/references\/voxengine\/appevents#callalerting\">CallAlerting<\/a><\/noindex>.<\/p>\n<p>Primero declaramos una variable para poder comparar el valor inicial con el contador de llamadas. Luego intentamos obtener el valor de la clave totalCalls del almacenamiento. Si tal clave a\u00fan no existe, la creamos:<\/p>\n<pre><code class=\"javascript\">try {\n    r = await ApplicationStorage.get('totalCalls');\n    if (r === null) {\n        r = await ApplicationStorage.put('totalCalls', 0);\n    }\n}<\/code><\/pre>\n<p>\nA continuaci\u00f3n, es necesario aumentar el valor de la clave en el almacenamiento:<\/p>\n<pre><code class=\"javascript\">try {\n        await ApplicationStorage.put('totalCalls', (r.value | 0) + 1);\n    }<\/code><\/pre>\n<p><\/p>\n<blockquote><p>ATENCI\u00d3N<\/p>\n<p>Para cada promesa, es necesario especificar expl\u00edcitamente el manejo de errores, como se muestra en el fragmento anterior; de lo contrario, la ejecuci\u00f3n del script se detendr\u00e1 y ver\u00e1s un error en los registros. M\u00e1s detalles <noindex><a rel=\"nofollow\" href=\"https:\/\/voximplant.com\/blog\/cloud-side-javascript-promise-handling-update\">aqu\u00ed<\/a><\/noindex>.<\/p><\/blockquote>\n<p> Despu\u00e9s de trabajar con el almacenamiento, el script responde a la llamada entrante con s\u00edntesis de voz y dice cu\u00e1ntas veces has llamado antes. Despu\u00e9s de este mensaje, el script finaliza la sesi\u00f3n.<\/p>\n<p>Despu\u00e9s de guardar el script, ve a la pesta\u00f1a 'Enrutamiento' de tu aplicaci\u00f3n y haz clic en 'Nueva regla'. N\u00f3mbrala startCounting, especifica el script countingCalls y deja la m\u00e1scara por defecto (.*).<\/p>\n<p><img decoding=\"async\" alt=\"Almacenamiento key-value, o c\u00f3mo nuestras aplicaciones se volvieron m\u00e1s convenientes\" src=\"\/wp-content\/uploads\/2019\/11\/5f7452211a61dd98ccbdcbfac3f7ccd9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLo \u00faltimo es crear un usuario. Para esto, ve a 'Usuarios', haz clic en 'Crear usuario', especifica un nombre (por ejemplo, user1) y una contrase\u00f1a, luego haz clic en 'Crear'. Esta pareja de nombre de usuario y contrase\u00f1a ser\u00e1 necesaria para la autenticaci\u00f3n en el tel\u00e9fono web.<\/p>\n<h2>Verificamos.<\/h2>\n<p>\nAbre el tel\u00e9fono web a trav\u00e9s del enlace <noindex><a rel=\"nofollow\" href=\"https:\/\/phone.voximplant.com\/\">phone.voximplant.com<\/a><\/noindex> e inicia sesi\u00f3n usando el nombre de cuenta, el nombre de la aplicaci\u00f3n y la pareja de nombre de usuario y contrase\u00f1a del usuario de la aplicaci\u00f3n. Despu\u00e9s de un inicio de sesi\u00f3n exitoso, introduce cualquier conjunto de caracteres en el campo de entrada y presiona Llamar. Si todo se hizo correctamente, \u00a1escuchar\u00e1s un saludo sintetizado!<\/p>\n<p>Te deseamos un excelente desarrollo en Voximplant y mantente atento a las noticias; \u00a1habr\u00e1 muchas m\u00e1s \ud83d\ude09!<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/Voximplant\/blog\/476452\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0422\u043e\u0442, \u043a\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 Voximplant, \u0437\u043d\u0430\u0435\u0442 \u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u00ab\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0432\u043e\u043d\u043a\u043e\u0432. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2013 \u044d\u0442\u043e \u043a\u0440\u0430\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u043c\u0435\u043d\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0432\u0445\u043e\u0434\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Voximplant, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0435 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f. \u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u00ab\u043d\u0435 \u043f\u043e\u043c\u043d\u0438\u043b\u0438\u00bb [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53015","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 key-value, \u0438\u043b\u0438 \u043a\u0430\u043a \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043b\u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-11-20T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Almacenamiento key-value, o c\u00f3mo nuestras aplicaciones se volvieron m\u00e1s convenientes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 key-value, \u0438\u043b\u0438 \u043a\u0430\u043a \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043b\u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/hranilishhe-key-value-ili-kak-nashi-prilozheniya-stali-udobnee","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-11-20T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53015","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 05:45:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:32:32","updated":"2026-01-24 05:45:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/53015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=53015"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/53015\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=53015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=53015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=53015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}