Обновить
0
0
agnostik @agnostik

Пользователь

Отправить сообщение
Это первый прототип будущего eyePhone.
А как вы это сделали, поделитесь советом, пожалуйста.
Сделали бы лучше нормальную навигацию по альт-таб…
А потом бы уже лезли в революции в UI.
Вот, кстати, насчет xmpp. Ловлю я забавный баг.
Тестирую xmpp-бота через Nimbuzz iphone app (в котором включен GTalk аккаунт). Шлю боту сообщения.
Смотрю логи, а там критическая ошибка:

/_ah/xmpp/message/chat/
java.lang.IllegalArgumentException: Must set a body

Далее цепочка стека, и там нахожу что узкое место в моем doPost запросе, на строке где я извлекаю сообщение:

Message message = xmppService.parseMessage(request);
String messageBody = message.getBody().toLowerCase();

То-есть боту сообщения идут. (пустое сообщение я не могу отправить).
Но почему-то body отсутствует.

Еще раз стек:

/_ah/xmpp/message/chat/
java.lang.IllegalArgumentException: Must set a body
at com.google.appengine.api.xmpp.MessageBuilder.build(MessageBuilder.java:54)
at com.google.appengine.api.xmpp.InboundMessageParser.parseMessage(InboundMessageParser.java:43)
at com.google.appengine.api.xmpp.XMPPServiceImpl.parseMessage(XMPPServiceImpl.java:190)
at com.oskolkov.java.texas.TexasBot.doPost(TexasBot.java:209)
и т.д.

причем на функциональность бота это никак не влияет. Он отвечает на определнные сообщения нужным образом (то-есть body пришедшего сообщения парсится получается).
Но критические ошибки в логах всё равно глаз режут.

Похоже, что это чисто nimbuzz так странно воспринимается.
Мне кажется это нужно очень исхитриться чтобы использовать ГАЕшный xmpp для телефонии (Каким боком вообще не представляю).
Что вы имеете ввиду?
Вот еще одна интересная штука.
Когда я вызываю при приёме сообщения:

Message message.getFromJid().getId()

то получаю вот такие айдишники условно
r***@*****.com/Talk.v105FBAF40B9

Причем вот этот вот хлам после слэша периодически меняется, даже если используешь один и тот же Гугл-Ток клиент. Это сильно мешает.

Не знаете ли вы как получить строго адрес почты? me@mydomain.com

Или только вырезать вручную?
Спасибо.
Я вот буквально минуту назад разобрался.
Не разобрался с тем, что гугл хранит несколько версий. И нужно самую свежую версию делать дефолтной вручную.

Заработал и Крон и вызов им GET'а /_ah/xmpp/message/chat/
Пардон, туплю-с.
Там в Дэшбоарде можно переключать версии приложения в выпадающем списке. Выбрал последнюю, и сервис появился.

А вот Cron похоже задания по адресу /_ah/xmpp/message/chat/ выполнять не хочет :(
В Cron Jobs постоянно вижу такую строку:

every 5 minutes (UTC)
2011/02/10 11:49:19 on time Failed

Смущает ещё то, что я пишу боту сообщения, но он на них не реагирует, хотя должен. Такое ощущение что POST запросы не ловятся. И логи в веб-интерфейсе молчат по поводу запросов. Логов вообще никаких нет.
Бардак какой-то в этом GAE происходит.
А не приходилось ли вам сталкиваться с такой бедой, когда в appengine-web.xml вы просите добавить xmppService
<inbound-services>
xmpp_message
</inbound-services>

а гугл его не активирует почему-то.
Через веб-интерфейс смотрю в Application Settings → Configured Services, а там пусто.
Хотя буквально пару дней назад писал другого бота и всё работало, и xmpp был в том списке.
То приложение я убил, создал вот новое, уже чистовое, задеплоил и не работает.

Странно.
О, то что нужно. Спасибо.

Хотел спросить у вас, как у человека явно в теме, не порекомендуете ли вы какого-нибудь коммьюнити по GAE более-менее живого?
Нашел русскоязычную гугл-группу, но похоже она мертва. Англоязычная, — там премодерация и, по-моему, пробиться невозможно.
Просто по ходу возникает море граблей (например, даже полностью скопированный из getting started пример по типу hello world так и не захотел заработать на локальном сервере, получаю HTTP ERROR 405), и гуглиться ответов крайне мало.
Как раз на английском. Просто Task Queue и Cron ( code.google.com/intl/uk-UA/appengine/docs/java/config/cron.html ) вещи разные.
Про Крон написано лишь как структурировать.хмл с инструкциями, и что там же указывается /url который будет дергаться. И всё. Каким именно образом не сказано.
Я буквально пару дней работаю с GAE и очень много вопросов, на которые не ответило прохождение Getting Started и остальные доки.
Спасибо!

Только у гугла как-то совсем документация рваная какая-то.
Например не смог найти каким образом «дергается» сервлет кроном. Какая функция будет им запущена? doGet?
И ещё вопрос — можно ли как-то дебажить яббер-бота на локальном сервере?
Не могу найти как.
Приходится деплоить после каждого изменения и дебажить в реальных услових, а это геммор.
Спасибо, за очень полезный пост!
Я сам только начал работать с GAE (да и с явой) и сразу с задачи написать бота. Т.к., по-моему, очень удобный способ.

Но у меня задачка не только написать бота который что-то отвечает, но чтобы каждый день в определенное время он совершал некое действие (буду использовать Cron).
То-есть понадобиться два сервлета, насколько я понимаю. Один будет обрабатывать простые запросы-сообщения. Второй будет включаться Кроном.

Поэтому у меня вопрос: правильно ли я понимаю, что xmppService который нам выдает XMPPServiceFactory.getXMPPService(); — его эксземляр доступен из любого сервлета, так? В своем роде синглтон.
Потому что проблема для меня как-то связать два сервлета. Но если я могу из любого из них дергать единый экземgляр xmppService'а — это очень облегчает задачу.

Поправьте меня, пожалуйста, если я ошибаюсь.
Благодарю.
А вы не могли бы рассказать какое железо внутри?
А нужно будет отдельно покупать этот пак?
Или пользователи получат его как бесплатное обновление?
Так в итоге с 13-ым шагом как ответ находится?

Информация

В рейтинге
Не участвует
Откуда
Украина
Зарегистрирован
Активность