viber-bot-php icon indicating copy to clipboard operation
viber-bot-php copied to clipboard

Не заполняется имя контакта

Open ptz-nerf opened this issue 7 years ago • 5 comments
trafficstars

При получении данных контакта, заполняется только номер телефона. https://github.com/Bogdaan/viber-bot-php/blob/984b6bccd4956c60ae6ef35b57865278b86ba4aa/src/Api/Message/Contact.php#L104-L117

ptz-nerf avatar Jul 11 '18 13:07 ptz-nerf

Да, похоже это баг - можете сделать PR ?

Bogdaan avatar Jul 11 '18 13:07 Bogdaan

Да, но не в ближайшее время.

ptz-nerf avatar Jul 11 '18 15:07 ptz-nerf

Проблема в конструкторе для класса Etinity. Если у дочернего класса есть свойство propertiesMap, то будут обрабатываться только те свойства для которых задан и имеет сеттер, прочие свойства будет игнорироваться.

Исправленный код ниже.

#44

nickender avatar Jul 22 '18 15:07 nickender

Да, там есть обозначенная проблема в конструкторе, но по-хорошему нужно заменить полностью весь if на приведенный вариант. Но это не решит проблему (там нет свойства contact). Там уже есть сеттер setConcat c опечаткой в имени, в который попадают данные, нужно просто их разобрать $this->name = $contact['name'];.

У меня сейчас нет возможности, плевое дело, постараюсь сделать позже...

ptz-nerf avatar Jul 23 '18 00:07 ptz-nerf

Тут дело не только в отсутствии name. Cообщение типа Contact может себе содержать поле text. Туда, например, помещается содержимое ActionBody кнопки с типом share-phone. Поскольку ответ 'share-phone' не перехватывается OnText как в случае с 'reply' ибо типизируется как Contact, пришлось в наглую добавить для класса Contact свойства text, метод getText и изменить toArray.

Зачем? А что бы юзер в ответ на запрос собственного телефона не скинул произвольный контакт из телефонной книги в ActionBody кладу рандомный токен, а потом проверяю.

nickender avatar Jul 23 '18 11:07 nickender