See about dialog для чего нужна программа
Sim App Dialog — что это за программа на Android (Huawei/Honor) и нужна ли она? (com.android.simappdialog)
Приветствую. Обновление прошивки улучшает производительность, добавляет новые функции, настройки, технологии, программы. Однако производитель не всегда дает описание новому функционалу — сегодня речь пойдет об одном новом неизвестном приложении на смартфонах Huawei/Honor.
Sim App Dialog — что это такое?
Системное приложение работы сервисного меню SIM-карты, как правило состоящее из подобных услуг (некоторые могут быть платными):
Также теоретически Sim App Dialog может иметь отношение к переключению сим-карт, работе SMS, MMS либо другим функциям, связанным с симкой.
Может находиться в автозагрузке. Название пакета — com.android.simappdialog. По отзывам — появляется после обновления EMUI 9.1 (хуавееская прошивка). Слово simappdialog расшифровывается примерно как сим-карта / программа / диалог (взаимодействие с пользователем, отображение менюшки).
Программа появилась даже у китайских юзеров:
Sim App Dialog — можно ли удалить/отключить?
После удаления и перезагрузки может не работать функционал SIM-карты. Но когда прошивка стоковая, загрузчик заблокирован, и опция отключения при этом присутствует — можно пробовать отключить (видимо отключение предусмотрено производителем). При наличии проблем — все вернуть обратно. При возможности, в целях страховки — лучше сделать бэкап.
Один юзер удалил давно — телефон работает в штатном режиме.
Заключение
Свежий взгляд на отображение диалогов в Android
На картинке первая мысль читателя, который недоумевает, что можно написать про такую простую задачу как отображения диалога. Аналогично думает и менеджер: «Тут ничего сложного, наш Вася за 5 минут сделает». Я, конечно, утрирую, но на самом деле всё не так просто, как кажется на первый взгляд. Особенно если мы говорим про Android.
Итак, на дворе шёл 2019 год, а мы всё ещё не умеем нормально показывать диалоги.
Давайте всё по порядку, и начнем с постановки задачи:
Требуется показать простой диалог с текстом для подтверждения действия и кнопками «подтвердить/отмена». По нажатию на кнопку «подтвердить» — совершить действие, по кнопке «отмена» — закрыть диалог.
Решение «в лоб»
Я бы назвал этот способ джуниорским, потому что не первый раз сталкиваюсь с непониманием, почему нельзя просто использовать AlertDialog, как показано ниже:
Довольно распространенный способ для начинающего разработчика, он очевиден и интуитивно понятен. Но, как и во многих случаях при работе с Android, этот способ совершенно неправильный. На ровном месте мы получаем утечку памяти, достаточно повернуть устройство, и вы увидете в логах такую ошибку:
На Stackoverflow вопрос по этой проблеме один из самых популярных. Если коротко, то проблема в том, что мы либо показываем диалог, либо не закрываем диалог после завершения работы активити.
Можно, конечно, вызывать dismiss у диалога в onPause или onDestroy активити, как советуют в ответе по ссылке. Но это не совсем то, что нам нужно. Мы хотим, чтобы диалог восстанавливался после поворота устройства.
Устаревший способ
До появления фрагментов в Android диалоги должны были отображаться через вызов метода активити showDialog. В этом случае активити правильно управляет жизненным циклом диалога и восстанавливает его после поворота. Создание самого диалога нужно было реализовать в коллбэке onCreateDialog:
Не очень удобно, что приходится заводить идентификатор диалога и передавать параметры через Bundle. И мы все ещё можем получить проблему «leaked window», если попытаемся отобразить диалог после вызова onDestroy у активити. Такое возможно, например, при попытке показать ошибку после асинхронной операции.
Вообще, эта проблема типична для Android, когда нужно что-то сделать после асинхронной операции, а активити или фрагмент уже уничтожен в этот момент. Наверное, поэтому MV*-паттерны более популярны в Android-сообществе, чем среди iOS-разработчиков.
Способ из документации
В Android Honeycomb появились фрагменты, и описанный выше способ устарел, а метод showDialog у активити помечен как deprecated. Нет, AlertDialog не устарел, как ошибаются многие. Просто теперь появился DialogFragment, который оборачивает объект диалога и управляет его жизненным циклом.
Родные фрагменты тоже устарели начиная с 28 API. Теперь следует использовать только реализацию из Support Library(AndroidX).
Давайте реализуем нашу задачу, как это предписывает официальная документация:
Если читателю не очень понятно, почему нельзя передавать слушатель через конструктор, то он может почитать подробнее об этом тут
Код фрагмента диалога:
Достаточно много кода получилось, не так ли?
Как правило, в проекте есть какой-нибудь MVP, но я решил, что вызовы презентера можно опустить в данном случае. В примере выше стоит ещё добавить статический метод создания диалога newInstance и передачу параметров в аргументы фрагмента, всё как полагается.
И это всё ради того, чтобы диалог вовремя скрывался и правильно восстанавливался. Не удивительно, что появляются такие вопросы на Stackoverflow: один и два.
Поиск идеального решения
Текущее положение дел нас не устраивало, и мы стали искать способ, как сделать работу с диалогами более комфортной. Было ощущение, что можно сделать проще, почти как в первом способе.
Ниже сформулированы соображения, которыми мы руководствовались:
Мы учли все вышеописанные требования и придумали способ реактивного показа диалогов, который успешно реализовали в нашей библиотеке RxPM (про нее есть отдельная статья).
Само решение не требует библиотеки и может быть сделано отдельно. Руководствуясь идеей «диалог как state» можно попробовать построить решение на основе модных ViewModel и LiveData. Но я оставлю это право за читателем, а далее речь пойдет уже о готовом решении из библиотеки.
Реактивный способ
Я покажу, как исходная задача решается в RxPM, но сначала пару слов о ключевых понятиях из библиотеки:
За состояние диалога отвечает класс DialogControl. Он имеет два параметра: первый для типа данных, которые должны отображаться в диалоге, второй — для типа результата. В нашем примере тип данных будет Unit, но это может быть сообщение пользователю или любой другой тип.
В DialogControl есть следующие методы:
В DialogControl хранится состояние — есть диалог на экране или нет (Displayed/Absent). Вот так это выглядит в коде класса:
Создадим простую PresentationModel:
Обратите внимание, что обработка кликов, получение подтверждения и обработка действия реализованы в одной цепочке. Это позволяет сделать код сфокусированным и не раскидывать логику по нескольким коллбэкам.
Далее просто привязываем DialogControl во View с помощью экстеншена bindTo.
Собираем обычный AlertDialog, а результат отправляем через sendResult:
При типичном сценарии под капотом происходит примерно следующее:
Стоит отметить, что диалог закрывается и в момент, когда View отвязывается от PresentationModel. В этом случае состояние остается Displayed. Оно будет получено при следующей привязке и диалог будет восстановлен.
Как видите, необходимость в DialogFragment пропала. Диалог показывается, когда View привязывается к PresentationModel и скрывается, когда View отвязывается. За счёт того, что состояние хранится в DialogControl, который в свою очередь хранится в PresentationModel, диалог восстанавливается после поворота устройства.
Пишите диалоги правильно
Мы с вами рассмотрели несколько способов отображения диалогов. Если вы все ещё показываете первым способом, то прошу вас, не делайте больше так. Для любителей MVP ничего не остается, как использовать стандартный способ, который описан в официальной документации. К сожалению, склонность к императивности этого паттерна не позволяет сделать по-другому. Ну, а фанатам RxJava рекомендую присмотреться к реактивному способу и нашей библиотеке RxPM.
About Dialog
Я редко раздаю сорцы. Причин тут много.
Hо тут, долго решал, постить или нет, наконец, спустя полгода, решил, что стоит. 😉 Может новичкам будет полезно, а у маститых, почивших на лаврах, гуру отпадет головная боль о диалоге и они смогут спокойно спать и не видеть ужасов во сне, в которых они отдают заказчику дистрибутив на CD и вспоминают, что там нет About Dialog’а. 😉
ВСТУПЛЕHИЕ
About диалог бич любого программиста. Вначале просто некогда им заниматься и Help|About висит с умным видом ничего не показывая. Затем, там появляется мессаджбокс с указанием версии. Обычно на этом и зацикливается. Создавать приличный диалог бокс некогда, да и мысли о его оформлении не лезут в голову, занятую «. процессоры, компьютеры, принтеры.». По крайней мере у меня так было в недавнем прошлом. А потом, я решил написать универсальный диалог. Писал его года 1.5. Т.е. все эти 1.5 года он модифицировался, дорабатывался. Hа некотором этапе был переделан под Sheridan ActiveThreed, но спустя время, было решено, что не гоже приаттачивать к такому простому окну библиотеку на 300 килобайт. В настоящий момент, диалог бокс не использует никаких посторонних ocx и dll.
ОПИСАHИЕ
Я публикую сорцы, с тем, чтобы каждый мог изменить окно под себя, и имел возможность встраивать его в код, а не нести отдельной dll. Код довольно прозрачен, поэтому комментариев не требуется. Диалог отображает:
Вроде все. Диалог лучше все-таки посмотреть, но не в дизайне, а в рантайме, запустив его, скажем из Form_load формы Form1. Можно и из Sub main, но тогда нельзя простыми способами передать иконку. Hадеюсь он покажется вам симпатичным на вид, так что переделывать практически ничего не придется. Hадеюсь вы по достоинству оцените стиль работы со ссылками, аналогичный тому, что в браузерах (он попортил мне много крови 😉 ). Ах да, саппорт вызывается по щелчку по иконке приложения. Может не вполне явный путь, но кнопку там негде располагать. Тут есть один глючок, точнее недоделка. Там не отрабатывается полноценный клик, а просто срабатывает по MouseDown. Это незаметно, но не позволяет, щелкнув по кнопочке, увести с нее мышь. 🙂
Диалоги на английском по темам
Для чего и как учить диалоги на английском
Всем известно, что изучать английский язык можно с разными целями. Кому-то необходимо освоить деловую переписку, кто-то хочет читать книги, написанные на английском, в оригинале, кто-то изучает иностранный, чтобы понимать на слух известные песни любимых групп, иногда требуются навыки перевода специальной литературы. Во всех этих случаях навык непосредственного общения может и не понадобится. Но многим людям уроки английского нужны именно для того, чтобы общаться на нем в бытовых ситуациях с друзьями, партнерами или с людьми в туристических поездках за границей. В этом случае важнейшим средством для формирования навыка повседневного общения являются разнообразные диалоги на английском языке.
Как говорил один почтенный преподаватель английского в университете, заставляя своих студентов повторять одни и те же фразы снова и снова: «Неподготовленная речь – это хорошо подготовленная речь». Эта, парадоксальная на первый взгляд, фраза на самом деле имеет определенный практический смысл. Если вы не являетесь носителем языка, в любой ситуации спонтанного общения для вас важно иметь в памяти набор хорошо выученных клише на разные темы. В этом случае вы не будете задумываться над составлением каждого предложения, а все ваше внимание сосредоточится на смысле того, о чем вы говорите. Именно поэтому, при отработке разговорной речи преподаватель дает задание не просто читать и переводить диалоги на разные темы, но и заучивать их наизусть.
Примеры диалогов на разные темы
В любом случае, важно помнить, что диалог – это не просто набор фраз по типу «вопрос – ответ», а обязательно и реакция на информацию собеседника, и эмоциональная составляющая той или иной степени. Поэтому при разучивании новых материалов и диалогов на английском, аудио сопровождение играет очень важную роль. Слушая диалоги, вы не только запоминаете фразы, но и копируете интонационный рисунок и правильное произношение, что имеет особенно большое значение именно в диалогической речи и восприятии речи иностранца на слух.
Сегодня мы представим вашему вниманию интересные диалоги на английском языке с переводом, полные версии которых Вы можете увидеть, зарегистрировавшись на сайте Lim English. В этом случае, представленные диалоги будут сопровождаться упражнениями, подробным словарем новых слов и грамматическими пояснениями.
Диалог на тему «знакомство»
Итак, любое общение начинается со закомства.
— Fine, thanks. And you?
— Great! My name is Lima.
— I am Emily. It’s nice to meet you.
— It’s nice to meet you, too.
— Are you from New York?
— Yes, I am. Where are you from?
— I am from here, from Bedford.
— Oh, great. Can we be friends?
— Хорошо, спасибо! А у тебя?
— Замечательно! Меня зовут Лима.
— Я – Эмили. Приятно c тобой познакомиться.
— Мне тоже приятно познакомиться.
— Я отсюда, из Бэдфорда.
— О! Прекрасно. Можем ли мы быть друзьями?
Диалог о погоде
Как известно, если вам нужно завести беседу с малознакомым человеком тема погоды будет хорошим вариантом. Эта тема интернациональна, политкорректна и универсальна для любого круга. Особенно популярна эта тема у жителей Великобритании. И это неудивительно, ведь эта страна известна переменчивостью погоды. Поэтому, несколько фраз о погоде, которыми перебрасываются при встрече знакомые, являются зачастую просто формой приветствия, а вовсе не способом получить какую-то информацию.
— Hello, Martin, lovely day, isn’t it?
— Yes, it says it will be a bit cloudy in the morning. But the day will be bright and sunny.
— How nice. A perfect day for an outing. I promised my family a barbecue, you know.
— Great! I hope you’ll enjoy it.
— Привет, Мартин, прекрасный денек, не так ли?
— Абсолютно чудесный – тепло и ясно. Какой прогноз на завтра? Не знаешь?
— Да, знаю, говорят, будет немного облачно утром. Но день будет ясным и солнечным.
— Как хорошо. Отличный день для загородной прогулки. Я пообещал своей семье барбекю, знаешь ли.
— Здорово! Надеюсь, вам понравится.
Хотите улучшить английский?
Попробуйте наши онлайн-курсы!
Диалог в ресторане
Диалоги в кафе или ресторане часто используются в учебных материалах и разговорниках. Изучив представленные выражения, вы сможете использовать их в заграничной поездке. К тому же, некоторые структуры и, так называемые, фразы вежливости будут вам полезны и в других речевых ситуациях.
Jerry: Let’s go for a walk.
Lima: Have you got any ideas where we can go?
Jerry: Yes, I have. Let’s go to the restaurant.
Waiter: Good evening. What can I do for you? What would you like to order?
Jerry: Have you got mashed potatoes?
Waiter: Yes, we have.
Jerry: Have you got any juice?
Waiter: Apple juice, tomato juice and orange juice.
Jerry: Give us orange juice, please. Have you got any ice-cream?
Waiter: Yes, we have vanilla ice-cream, chocolate ice-cream and ice-cream with topping.
Jerry: Give us one vanilla ice-cream and one chocolate ice-cream.
Jerry: That’s all. Thank you.
Джерри: Пойдем погуляем.
У тебя есть какие-нибудь идеи куда мы можем пойти?
Джерри: Да. Давай сходим в ресторан.
Официант: Добрый вечер. Что я могу сделать для вас? Что бы вы хотели заказать?
Джерри: У вас есть картофельное пюре?
Джерри: У вас есть какой-нибудь сок?
Официант: Яблочный сок, томатный сок и апельсиновый сок.
Джерри: Дайте нам апельсиновый сок, пожалуйста. У вас есть какое-нибудь мороженое?
Официант: Да. У нас есть ванильное мороженое, шоколадное мороженое и мороженое с топпингом.
Джерри: Дайте нам одно ванильное мороженое и одно шоколадное мороженое.
Официант: Что-нибудь еще?
Джерри: Это все. Спасибо.
Диалог в магазине
Еще одна популярная тема для диалогов – это диалоги в магазине на английском, которые позволят вам с легкостью купить необходимые продукты:
Emily: Hey, Lima. Let’s go shopping.
Lima: Hi, Em. Let’s go!
Salesgirl: Good morning! Can I help you?
Emily: Good morning! What is the price of this dress?
Salesgirl: It costs one thousand dollars.
Emily: Oh, it’s a very expensive dress.
Lima: Let’s go to another store.
Lima: Look at these jeans. I like them.
Salesman: Can I help you?
Lima: Can you tell me what the price of those jeans is?
Salesman: Yes. The jeans cost three hundred dollars.
Lima: Ok, I’ll take those jeans and this T-shirt.
How about a nice dress for my friend?
Salesman: This dress is very popular this season.
Emily: Ok, I’ll take it. Thank you very much.
Salesman: You are welcome.
Эмилия: Привет, Лима. Пойдем по магазинам.
Лима: Привет, Эм. Пойдем!
Продавщица: Доброе утро! Могу я вам помочь?
Эмилия Доброе утро! Какая цена этого платья?
Продавщица: Оно стоит одну тысячу долларов.
Эмилия: О, это очень дорогое платье.
Лима: Давай пойдем в другой магазин.
Лима: Посмотри на эти джинсы. Мне они нравятся.
Продавец: Могу я вам помочь?
Лима: Вы можете сказать мне, какая цена на те джинсы?
Продавец: Да. Джинсы стоят триста долларов.
Лима: Хорошо, я возьму те джинсы и эту футболку.
Как насчет красивого платья для моей подруги?
Продавец: Это платье очень популярное в этом сезоне.
Эмилия: Хорошо, я возьму его. Спасибо вам большое.
Диалог друзей
Диалог друзей на английском – очень частый гость во всех учебных пособиях. Обсуждать можно самые разнообразные темы – школьные дела, отношения в семье, планы на будущее. Такие диалоги представляют большой простор для фантазии. Ведь взяв за основу какой-то готовый аудио диалог на английском, его всегда можно «подогнать» под себя. А когда говоришь о своем собственном опыте и эмоциях, материал запоминается гораздо легче.
Lima: So, have you decided where would you like to go on next holiday?
Emily: I think that I will go to my grandparents as usual. I will help them about the house.
And what about you?
Lima: I think that I will go to the seaside with my friends. Will you go with us?
Emily: What will you do there?
Lima: If the weather is fine, we will swim all the time. And I think we will go to an aqua park and maybe we will visit some excursions.
Emily: Oh, great. I think that I will join you.
Lima: Ok, I will call you.
Лима: Ну, ты решила, куда бы ты хотела поехать на следующие каникулы?
Эмилия: Я думаю, что я поеду к бабушке и дедушке, как всегда. Я буду помогать им по дому. А как насчет тебя?
Лима: Я думаю, что я поеду на море с моими друзьями. Поедешь с нами?
Эмилия: Что вы будете там делать?
Лима: Если погода будет хорошая, мы будем плавать все время. И я думаю, мы поедем в аквапарк и может быть посетим какие-нибудь экскурсии.
Эмилия: О, здорово. Я думаю, что я присоединюсь к вам.
Лима: Хорошо, я позвоню тебе.
Диалог в отеле
Предлагаем вам пару разговорных фраз на одну из самых распространённых тем «в отеле».
— I need the cheapest room in this hotel. How much is it?
— We have 2 number. The price is 10 dollars pro night.
— It`s not cheap. Sorry.
— Мне нужен самый дешевый номер в этом отеле. Сколько это стоит?
— У нас есть два таких номера. Цена составляет 10 долларов.
— Это недешево. Извините.
Бизнес диалог
Тематика бизнеса выделилась в английском в отдельную подтему. Сегодня есть множество курсов данного профиля, на онлайн-платформах специальные справочные материалы и целые интенсивы по этому профилю. Мы же предлагаем короткую беседу о бизнесе на английском:
— Good morning! May I talk to Mr. Johns?
— Good morning! Mr. Johns is busy at the moment. Do you mind leaving the message for him, please?
— No, I don’t. It is Mr.Saimon. I’m calling to confirm our meeting.
— Yes, Mr. Johns asked me to confirm!
— Thank you very much for information!
— Доброе утро! Могу я услышать мистера Джонса?
— Доброе утро! Мистер Джонс занят в данный момент. Может быть, вы оставите ему сообщение?
— Нет, спасибо. Это мистер Саймон. Я звоню подтвердить нашу встречу.
— Да, мистер Джонс попросил меня подтвердить!
— Спасибо Вам большое за информацию!
Эффективные способы заучивания диалогов
Онлайн самоучитель lim-english.com как раз и может стать своеобразной палочкой-выручалочкой в такой ситуации. Тексты и диалоги (dialogues in english) на сайте озвучены профессиональными дикторами. Вы сможете выбрать для себя наиболее комфортный способ заучивания – опираясь только на звуковой вариант, либо с опорой на английский или русский вариант текстов.
Автор статьи: Анастасия Романова, методолог Lim English
Библиотека диалогов Dialogs library
применимо к: Пакет SDK v4 APPLIES TO: SDK v4
Диалоговые окна — это центральная концепция в пакете SDK, предоставляющая способы управления долго выполняющимся диалогом с пользователем. Dialogs are a central concept in the SDK, providing ways to manage a long-running conversation with the user. Диалоговое окно выполняет задачу, которая может представлять часть или полный поток диалога. A dialog performs a task that can represent part of or a complete conversational thread. Он может охватывать только один раз или несколько, и может охватывать короткий или длительный период времени. It can span just one turn or many, and can span a short or long period of time.
В этой статье описываются основные классы и функции библиотеки диалогов. This article describes the core classes and features of the dialog library.
Если вы не знакомы с разработкой программы-роботы с помощью Bot Framework или создания нового диалогового интерфейса, начните с композитора платформы Bot. If you are new to developing bots with the Bot Framework or creating a new conversational experience, start with the Bot Framework Composer. Для существующего пакета SDK (First программы-роботы), не созданного на платформе Composer, рассмотрите возможность предоставления робота в качестве навыка и использования Composer для будущей разработки на Bot. For existing SDK-first bots, not created in Composer, consider exposing your bot as a skill and using Composer for future bot development.
Состояние в Dialog Dialog state
Диалоговые окна могут реализовывать множественную беседу, и поэтому они полагаются на сохраняемое состояние во всех случаях. Dialogs can implement a multi-turn conversation, and as such, they rely on persisted state across turns. Без состояния в диалоговых окнах робот не сможет понять, где находился в беседе или какая информация уже собрана. Without state in dialogs, your bot wouldn’t know where it was in the conversation or what information it had already gathered.
Чтобы сохранить диалоговое окно в диалоге, состояние диалогового окна должно быть извлечено из и сохранено в память каждый ход. To retain a dialog’s place in the conversation, the dialog’s state must be retrieved from and saved to memory each turn. Это осуществляется через метод доступа свойства состояния диалогового окна, определенного в состоянии диалога Bot. This is handled via a dialog state property accessor defined on the bot’s conversation state. Это состояние диалога управляет сведениями для всех активных диалоговых окон и дочерними элементами активных диалоговых окон. This dialog state manages information for all active dialogs, and children of active dialogs. Это позволяет элементу Bot выбрать место, где она была оставлена последней, и управлять множеством моделей диалога. This allows the bot to pick up where it left off last and to handle a variety of conversation models.
Инфраструктура диалоговых окон Dialog infrastructure
Наряду с различными типами диалоговых окон в разработке и управлении диалогами участвуют следующие классы. Along with various types of dialogs, the following classes are involved in the design and control of conversations. Хотя обычно не требуется взаимодействовать с этими классами напрямую, они знают о них и их назначение полезно при проектировании диалоговых окон для программы-робота. While you don’t usually need to interact with these classes directly, being aware of them and their purpose is useful when designing dialogs for a bot.
Класс Class | Описание Description |
---|---|
Набор диалоговых окон Dialog set | Определяет коллекцию диалоговых окон, которые могут ссылаться друг на друга и работать совместно. Defines a collection of dialogs that can reference each other and work in concert. |
Контекст диалога Dialog context | Содержит сведения обо всех активных диалоговых окнах. Contains information about all active dialogs. |
Экземпляр диалогового окна Dialog instance | Содержит сведения об одном активном диалоговом окне. Contains information about one active dialog. |
Результат диалогового окна Dialog turn result | Содержит сведения о состоянии из активного или недавно активного диалогового окна. Contains status information from an active, or recently active, dialog. Если активное диалоговое окно завершилось, оно содержит возвращаемое значение. If the active dialog ended, this contains its return value. |
Типы диалогов Dialog types
Библиотека диалоговых окон предоставляет несколько типов диалоговых окон, облегчающих управление беседами в Bot. The dialogs library provides a few types of dialogs to make your bot’s conversations easier to manage. Некоторые из этих типов подробно описаны далее в этой статье. Some of these types are described in more detail later in this article.
Адаптивные диалоги впервые были добавлены в версию 4,9 пакета SDK для C#. Adaptive dialogs were first added in version 4.9 of the C# SDK. Адаптивные диалоговые окна поддерживают Компоновщик Bot Framework и не предназначены для непосредственного использования в Bot-роботе SDK. Adaptive dialogs support the Bot Framework Composer and are not intended to be used directly in an SDK-first bot.
Шаблоны диалоговых окон Dialog patterns
Существует два основных шаблона запуска диалоговых окон и управления ими из программы-робота. There are two main patterns for starting and managing dialogs from a bot.
Стек диалоговых окон The dialog stack
Контекст диалогового окна содержит сведения обо всех активных диалоговых окнах и включает стек диалоговых окон, который выступает в качестве стека вызовов для всех активных диалоговых окон. A dialog context contains information about all active dialogs and includes a dialog stack, which acts as a call stack for all the active dialogs. Каждое диалоговое окно контейнера имеет внутренний набор диалоговых окон, управление которыми осуществляется, и поэтому в каждом активном диалоговом окне контейнера отображается внутренний контекст диалогового окна и стек диалоговых окон в рамках своего состояния. Each container dialog has an inner set of dialogs that it is controlling, and so each active container dialog introduces an inner dialog context and dialog stack as part of its state.
Хотя вы не будете обращаться к стеку напрямую, понимание того, что он существует и его функция поможет понять, как работают различные аспекты библиотеки диалогов. While you will not access the stack directly, understanding that it exists and its function will help you understand how various aspects of the dialogs library work.
Диалоговые окна контейнера Container dialogs
Диалоговое окно контейнера A container dialog может быть частью большего набора диалоговых окон. can be part of a larger dialog set. Каждый контейнер имеет внутренний набор диалоговых окон, который также управляется. Each container has an inner dialog set that is also managed.
Каждый набор диалоговых окон создает область для разрешения идентификаторов диалоговых окон. Each dialog set creates a scope for resolving dialog IDs.
В настоящее время пакет SDK реализует два типа диалоговых окна контейнеров: диалоговые окна компонентов и адаптивные диалоговые окна. The SDK currently implements two types of container dialogs: component dialogs and adaptive dialogs.
Концептуальная структура этих двух весьма различается. The conceptual structure of the two are quite different. Однако Bot-робот Composer может использовать оба варианта. However, a Composer bot can make use of both.
Идентификаторы диалоговых окон Dialog IDs
При добавлении диалогового окна в набор диалоговых окон ему назначается уникальный идентификатор в пределах этого набора. When you add a dialog to a dialog set, you assign it an unique ID within that set. Диалоговые окна в наборе ссылаются друг на друга по идентификаторам. Dialogs within a set reference each other by their IDs.
Когда одно диалоговое окно ссылается на другое диалоговое окно во время выполнения, оно делает это в ИДЕНТИФИКАТОРе диалогового окна. When one dialog references another dialog at run time, it does so by the dialog’s ID. Контекст диалогового окна пытается разрешить идентификатор на основе других диалоговых окон в диалоговом окне немедленного набора. The dialog context tries to resolve the ID based on the other dialogs in the immediate dialog set. Если совпадений нет, он ищет совпадение в содержащем или внешнем наборе диалоговых окон и т. д. If there is no match, it looks for a match in the containing or outer dialog set, and so on. Если совпадений не найдено, создается исключение или ошибка. If no match is found, an exception or error is generated.
Компонентные диалоги Component dialogs
В диалоговых окнах компонента используется модель последовательностей для диалогов, и каждое диалоговое окно в контейнере отвечает за вызов других диалоговых окон в контейнере. Component dialogs use a sequence model for conversations, and each dialog in the container is responsible for calling other dialogs in the container. При пустом стеке внутреннего диалогового окна компонента Компонент завершается. When the component dialog’s inner dialog stack is empty, the component ends.
Рассмотрите возможность использования диалоговых окон компонентов и каскадов, если у программы-робота есть сравнительно простой поток управления, для которого не требуется более динамичный поток диалога. Consider using component and waterfall dialogs if your bot has a relatively simple control flow that does not require more dynamic conversation flow.
Адаптивные диалоги Adaptive dialogs
Адаптивные диалоговые окна позволяют платформе Composer динамически обновлять поток диалога на основе контекста и событий. Adaptive dialogs allow Composer to dynamically update conversation flow based on context and events. Это позволяет использовать диалоговые окна более естественным образом и без перетекания. This enables dialogs to be more natural and free-flowing. Такой программы-роботы может: Such bots can:
Это особенно удобно при переключениях контекста беседы и паузах в ней. This is especially handy when dealing with conversation context switches and interruptions in the middle of a conversation. Адаптивные диалоговые окна поддерживаются и располагаются поверх обширной системы событий. Adaptive dialogs support and sit on top of a rich event system.
В статье Введение в композитор Framework Composer описаны функции, поддерживаемые composer и адаптивные диалоговые окна: распознавание языка и поддержка создания языка, использование триггеров и действий для моделирования потока обсуждений, доступ к областям памяти и т. д. The Introduction to Bot Framework Composer describes the features supported by Composer and adaptive dialogs: language recognition and language generation support, use of triggers and actions to model conversation flow, access to memory scopes, and so on.
Другие диалоговые окна Other dialogs
Диалоги QnA Maker и навыка можно использовать в качестве изолированных диалоговых окон или в составе коллекции диалоговых окон в контейнере. The QnA Maker and skill dialogs can be used as stand-alone dialogs or as part of a collection of dialogs in a container.
Диалоговое окно QnA Maker QnA Maker dialog
Диалоговое окно QnA Maker обращается к базе знаний QnA Maker и поддерживает QnA Maker запросы к исполнению и активные средства обучения. The QnA Maker dialog accesses a QnA Maker knowledge base and supports QnA Maker’s follow-up prompt and active learning features.
Дополнительные сведения см. в разделе: For more information, see:
Диалоговое окно навыка Skill dialog
Диалоговое окно навыка обращается к одному или нескольким навыкам и управляет ими. A skill dialog accesses and manages one or more skills. Диалог навыка отправляет действия из родительского робота в бот навыка и возвращает пользователю ответы от этого навыка. The skill dialog posts activities from the parent bot to the skill bot and returns the skill responses to the user.
Дополнительные сведения см. в разделе: For more information, see: