Как преобразовать дату и время, поступающие от пользователя в виде текста в боте webchat, в utc, используя c #, динамически получая информацию о культуре? - PullRequest
1 голос
/ 10 июня 2019

Я показываю подсказку в своем боте веб-чата, разработанном с использованием sdk v4 и c #, для ввода даты и времени, когда пользователь вводит дату, когда он приходит к коду в виде строки или текстового сообщения, теперь я не знаю, какой часовой пояс пользователя использует Теперь я хотел узнать, как динамически узнать информацию о культуре, чтобы я мог соответствующим образом преобразовать ее в utc.

В настоящее время я могу преобразовать время даты в utc, но оно не преобразуется надлежащим образом, например, я получаю ввод даты и времени в следующем формате ГГГГ-ММ-ДД ЧЧ: мм Я беру это значение и преобразовываю его в дату и время используя datetime parse или datetime.Parseexact затем, чтобы получить, я получаю вывод как то, что пользователь дал даже после преобразования. Я попытался предоставить информацию о культуре как IST, предполагая ее как IST, а затем попытался преобразовать, но проблема та же.

Я пробовал преобразование, используя смещение даты и времени, а также информацию о культуре в качестве инварианта, но это тоже проблема.

Например: ввод 2019-06-09 13:45, затем попытался принять это значение и применил все вышеперечисленные методы для преобразования в utc, но я получил тот же вывод, т. Е. 2019-06-09 13:45 который не имеет разницы ч / б вход и выход.

Есть ли что-то особенное, что я должен сделать для последней структуры. Сеть?

Если да, что я должен делать, объясните, пожалуйста, шаг за шагом, подробно, как я новичок в программировании и боте.

Я использую следующее: Визуальная студия 2019 Botframework: v4 Канал: канал чата Framework: .net 7.2 Langugae: с #

Я пробовал дату и время. Разбор, дата и время Разбор точный, попытка предоставить некоторую информацию о времени, например, для целей, которые сработали, попытка предоставить информацию о культуре в качестве инварианта, который также не работал, попытался предоставить некоторую информацию о культуре, например, связанную с IST, которая также не работала.

Ожидаемый результат: преобразование должно быть успешным, и должна наблюдаться некоторая разница Фактический результат: преобразование выполнено успешно, но нет разницы во входных и выходных данных.

1 Ответ

2 голосов
/ 11 июня 2019

Информация о культуре больше относится к формату даты (ММ-ДД-ГГ и ДД-ММ-ГГ), чем к таким вещам, как часовые пояса. Как поясняется в комментариях, вам необходимо явно отправить информацию о часовом поясе боту самостоятельно. В этом примере объясняется, как отправить приветственное сообщение через обратный канал в Web Chat v4.

Связанный вопрос из комментариев объясняет, как получить информацию о часовом поясе пользователя и как интерпретировать ее в вашем боте. Чтобы применить это к Web Chat v4, просто включите информацию о часовом поясе в значение события:

var d = new Date();
var tzoffset = d.getTimezoneOffset();
// When we receive DIRECT_LINE/CONNECT_FULFILLED action, we will send an event activity using WEB_CHAT/SEND_EVENT
dispatch({
  type: 'WEB_CHAT/SEND_EVENT',
  payload: {
    name: 'webchat/join',
    value: tzoffset.toString()
  }
});

Поскольку схема действий не изменилась, код бота v3 все еще можно применить к боту v4. Но вместо использования клиента коннектора вы можете отправлять сообщения с контекстом поворота:

await turnContext.SendActivityAsync(reply);

Если вы хотите использовать пакет Web Chat ES5, просто замените webchat.js на webchat-es5.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...