Реализация голосовых напоминаний

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Реализация голосовых напоминаний

Сообщение fandaymon » Ср мар 28, 2018 5:23 am

Ларчик просто открывался - вот в таком виде шаблон правильно работает

Код: Выделить всё

(Напомни|напомни) ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+) 
и $request = mb_strtolower($matches[7]);
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Реализация голосовых напоминаний

Сообщение xor » Ср мар 28, 2018 9:13 am

И вот, что интересно. У меня шаблоны регистронезависимые, а тут многие закладываются на заглавные/прописные буквы.
(Напомни|напомни)

Я один такой?

Отправлено с моего Redmi 4X через Tapatalk
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Реализация голосовых напоминаний

Сообщение Logrus » Ср мар 28, 2018 7:32 pm

-(Напомни|напомни)
у меня если названо с заглавной шаблон, так и распознает

-ага, в сценарии не работал
в третьем посту в сценарий, массив =>
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Krz
Сообщения: 22
Зарегистрирован: Сб мар 24, 2018 3:51 pm
Откуда: Сибирь
Благодарил (а): 2 раза
Поблагодарили: 17 раз

Re: Реализация голосовых напоминаний

Сообщение Krz » Сб мар 31, 2018 3:08 pm

Непонятно как-то. У меня с указанным мною шаблоном и кодом работает исправно, и слова не пропадают
20:06 Алиса: Вы просили напомнить надеть кроссовки на босу ногу и бежать по улице
20:06 Алиса: Вы просили напомнить попить чай с сахаром
20:04 Алиса: Задание напомнить попить чай с сахаром установлено на тридцать первое марта в 20:06
20:04 Admin: Напомни через две минуты попить чай с сахаром
20:03 Алиса: Задание напомнить надеть кроссовки на босу ногу и бежать по улице установлено на тридцать первое марта в 20:06
20:03 Admin: Напомни через три минуты надеть кроссовки на босу ногу и бежать по улице
Изображение
Изображение
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Реализация голосовых напоминаний

Сообщение fandaymon » Сб мар 31, 2018 3:17 pm

Krz писал(а):Непонятно как-то. У меня с указанным мною шаблоном и кодом работает исправно, и слова не пропадают
20:06 Алиса: Вы просили напомнить надеть кроссовки на босу ногу и бежать по улице
20:06 Алиса: Вы просили напомнить попить чай с сахаром
20:04 Алиса: Задание напомнить попить чай с сахаром установлено на тридцать первое марта в 20:06
20:04 Admin: Напомни через две минуты попить чай с сахаром
20:03 Алиса: Задание напомнить надеть кроссовки на босу ногу и бежать по улице установлено на тридцать первое марта в 20:06
20:03 Admin: Напомни через три минуты надеть кроссовки на босу ногу и бежать по улице
Видимо это зависит от каких-то установок PHP или локали или просто от версии PHP - когда вначале шаблона есть {} то шаблон неоднозначно отрабатывает. Это видно по тому, что именно попадает в matches. Вот если поставить (вариант1|вариант2) то всё отрабатывает вполне однозначно. Только тогда все индексы matches надо на 1 сдвигать
Аватара пользователя
Krz
Сообщения: 22
Зарегистрирован: Сб мар 24, 2018 3:51 pm
Откуда: Сибирь
Благодарил (а): 2 раза
Поблагодарили: 17 раз

Re: Реализация голосовых напоминаний

Сообщение Krz » Вс апр 01, 2018 2:47 pm

fandaymon писал(а):когда вначале шаблона есть {} то шаблон неоднозначно отрабатывает
Там стоят квадратные скобки, а не фигурные
Изображение
Изображение
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Реализация голосовых напоминаний

Сообщение fandaymon » Вс апр 01, 2018 2:49 pm

Krz писал(а):
fandaymon писал(а):когда вначале шаблона есть {} то шаблон неоднозначно отрабатывает
Там стоят квадратные скобки, а не фигурные
Да - квадратные и имелись в виду
Stasev
Сообщения: 16
Зарегистрирован: Пн мар 19, 2018 12:55 am
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Re: Реализация голосовых напоминаний

Сообщение Stasev » Вт апр 03, 2018 9:19 pm

Перепробовал кучу вариантов - чет у меня так и не получается чтоб не пропадало последнее слово. Приходится говорить ей в конце "Спасибо" :(
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Реализация голосовых напоминаний

Сообщение fandaymon » Вт апр 03, 2018 9:38 pm

Stasev писал(а):
Вт апр 03, 2018 9:19 pm
Перепробовал кучу вариантов - чет у меня так и не получается чтоб не пропадало последнее слово. Приходится говорить ей в конце "Спасибо" :(
Вот такой - должен работать

напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
За это сообщение автора fandaymon поблагодарили (всего 3):
Stasev (Вт апр 03, 2018 10:58 pm) • Jilber (Вт апр 03, 2018 11:31 pm) • lostar-igor (Ср июл 11, 2018 3:27 pm)
Рейтинг: 3.49%
Stasev
Сообщения: 16
Зарегистрирован: Пн мар 19, 2018 12:55 am
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Re: Реализация голосовых напоминаний

Сообщение Stasev » Вт апр 03, 2018 10:58 pm

fandaymon писал(а):
Вт апр 03, 2018 9:38 pm
Stasev писал(а):
Вт апр 03, 2018 9:19 pm
Перепробовал кучу вариантов - чет у меня так и не получается чтоб не пропадало последнее слово. Приходится говорить ей в конце "Спасибо" :(
Вот такой - должен работать

напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
Блин, вот это вот [Нн] оказывается мешало. Спасибо. Теперь заработало как надо.
Ответить