Для начала вам нужно сначала создать и передать хранилище userState в ваш файл index.js.
const { ConversationState, MemoryStorage, UserState } = require('botbuilder');
[...]
const conversationState = new ConversationState(memoryStorage);
const memoryStorage = new MemoryStorage();
const userState = new UserState(memoryStorage);
[...]
const bot = new ExampleBot(conversationState, userState);
В своем файле bot.js включите и создайте экземпляр userState и назначьте профиль пользователя:
class ExampleBot {
constructor(conversationState, userState) {
[...]
const USER_PROFILE = 'userProfile';
this.userProfile = userState.createProperty(USER_PROFILE);
this.userState = userState;
[...]
}
Теперь вы можете получить доступ к userState. Вы можете сделать это как часть OnTurn:
async onTurn(turnContext) {
if (turnContext.activity.type === ActivityTypes.Message) {
const userProfile = await this.userProfile.get(turnContext, {});
const conversationData = await this.conversationData.get(
turnContext, { promptedForUserName: false });
if (!userProfile.name) {
if (conversationData.promptedForUserName) {
userProfile.name = turnContext.activity.text;
await turnContext.sendActivity(`Thanks ${userProfile.name}.`);
conversationData.promptedForUserName = false;
} else {
await turnContext.sendActivity('What is your name?');
conversationData.promptedForUserName = true;
}
await this.userProfile.set(turnContext, userProfile);
await this.userState.saveChanges(turnContext);
}
}
}
или как часть водопада / шага:
async someWaterfallStep(step) {
const user = await this.userProfile.get(step.context, {});
if (!user.name) {
[do something]
} else {
await step.context.sendActivity(`Hello ${user.name}. Nice to meet you!`);
return step.endDialog()
}
}
Вы можете узнать больше о настройке состояния пользователя в этом документ .
Надежда на помощь!
См. SVNBook , в частности раздел «Отмена изменений», и обратное слияние.
Другое распространенное использование svn merge - откат уже внесенных изменений. Предположим, вы удачно работаете над рабочей копией / calc / trunk и обнаруживаете, что изменение, внесенное в редакцию 303, которая изменила integer.c, совершенно неверно. Это никогда не должно было быть совершено. Вы можете использовать svn merge, чтобы «отменить» изменения в вашей рабочей копии, а затем зафиксировать локальное изменение в хранилище. Все, что вам нужно сделать, это указать обратную разницу:
$ svn merge -r 303: 302 http://svn.example.com/repos/calc/trunk
Чтобы уточнить, ваше первоначальное изменение будет все еще находиться в хранилище . Но теперь вы отозвали его в более поздней редакции. я. е. репозиторий захватил все ваши изменения (это действительно то, что вы хотите! Если вы не проверили пароль в открытом виде или подобный!)
Используя TortoiseSVN, выберите Показать журнал и найдите ревизию, к которой вы хотите вернуться. В контекстном меню выберите «Вернуться к этой ревизии». При этом выполняется обратное слияние с вашей рабочей копией, поэтому вам нужно будет зафиксировать свою рабочую копию для завершения операции.
См. Также Как мы отслеживаем ветвь нашей рабочей копии? : -)
Если вы имели в виду, как мне удалить историю случайной регистрации: Это сложно.
svn не позволяет вам ничего отменять, поскольку сохраняет ревизии как наборы изменений. Тем не менее, есть некоторые инструменты, которые позволяют вам делать практически все в дампе хранилища. Вы могли бы :
Дамп своего репо.
Используйте svndumpfilter из svn admin tools , чтобы избавиться от проверки.
Положите его обратно в репо.
Но это может полностью испортить ваше репо, поэтому никогда не пытайтесь делать это, если только вы не знаете, что делаете, и у вас есть резервные копии.
Да, это действительно то, для чего нужна Subversion.
Вам нужно просто заменить свою копию на предыдущая ревизия в репозитории SVN.
Есть несколько вариантов:
Но я настоятельно рекомендую вам сделать следующее, прежде чем заменять свою локальную копию:
Вы не можете удалить ревизию - некоторые ответы здесь кажутся быть полностью непонимающим, что вы хотите. Но вы можете изменить сообщение о регистрации, чтобы указать, что оно было непреднамеренным. Чекины стоят не очень дорого, поэтому иметь лишний лишний не составляет особого труда.
Я бы в этом сомневался. Одна из основных идей управления исходным кодом заключается в том, что хранилище не теряет никакой истории. Вы не можете удалить историю. Лучшее, что вы можете сделать, это получить старую версию и перезаписать текущую. Но журналы истории все равно покажут вашу ошибку.
(Оффтоп: Какую IDE вы используете, что-то в этом роде?)
вы не можете отозвать ревизию, самое большее, что вы можете сделать, это вернуться к предыдущей ревизии и сделать еще одну регистрацию.
To comment on this as well: This is a series of commands that I did on a repository to revert it from revision 2 back to revision 1. You'd need to checkin at the end as well though.
Last login: Mon Apr 13 16:01:34 on ttys004
[wlynch@orange ~] cd /tmp
[wlynch@orange /tmp] svnadmin create foo
[wlynch@orange /tmp] svn co file:///tmp/foo foo-repo
Checked out revision 0.
[wlynch@orange /tmp] cd foo-repo/
[wlynch@orange foo-repo] ls
[wlynch@orange foo-repo] touch blah
[wlynch@orange foo-repo] touch repl
[wlynch@orange foo-repo] touch bar
[wlynch@orange foo-repo] svn add *
A bar
A blah
A repl
[wlynch@orange foo-repo] svn ci
Adding bar
Adding blah
Adding repl
Transmitting file data ...
Committed revision 1.
[wlynch@orange foo-repo] echo "hi" > bar
[wlynch@orange foo-repo] echo "oh no" > blah
[wlynch@orange foo-repo] svn ci
Sending bar
Sending blah
Transmitting file data ..
Committed revision 2.
[wlynch@orange older-foo] svn diff -r 1:2 file:///tmp/foo
Index: bar
===================================================================
--- bar (revision 1)
+++ bar (revision 2)
@@ -0,0 +1 @@
+hi
Index: blah
===================================================================
--- blah (revision 1)
+++ blah (revision 2)
@@ -0,0 +1 @@
+oh no
[wlynch@orange foo-repo] svn diff -r 1:2 file:///tmp/foo | patch -R
patching file bar
patching file blah