Tuesday, December 09, 2008

Как сделать Twitter bot

Twitter bot здесь - это приложение, которое автоматически отвечает на запросы других пользователей. В Twitter это возможно либо на основе @reply, либо через механизм прямых сообщений. Здесь мы покажем, как с помощью сервиса Twitter 411 можно создать собственный бот. Например, автоинформатор для ваших собственных личных или бизнес-применений.

Twitter 411 использует механизм сообщений (direct message в терминах Twitter). Пользователь Twitter может включить в свои друзья (следовать в терминах Twitter) пользователя t411 и отправлять ему запросы в виде прямых сообщений. Ответы будут также приходить в виде прямых сообщений. А обработка запросов определяется пользователями сервиса Twitter 411. Можно зарегистрировать нужное ключевое слово и тогда, сообщения, начинающиеся с заданного ключевого слова будут обрабатываться по вами же заданным правилам.

В качестве одного из способов обработки сообщений можно указать URL для собственного CGI скрипта, который будет обрабывать пришедшее сообщение и вовращать ответ для отправки спросившему. Как это выглядит? В составе Twitter 411 есть один из ботов, который поволяет узнать котировки акций. Вот на его примере можно и посмотреть, как это выглядит:

1. Зарегистрировано ключевое слово t (просто одна буква t). То есть все прямые сообщения, начинающиеся с лексемы t будут обрабатываться данным ботом.
2. Бот ожидает сообщений вида t биржевой_символ для запроса котировки. Например:
t ORCL - котировки Oracle
или
t JAVA - котировки Sun
3. В качестве реакции на пришедшее сообщение для данного бота указан URL на JSP файл, который и будет запрашивать котировки. В данном случае файл находится на сервере linkstore.ru и, соответственно, полный URL для данного файла есть http://linkstore.ru/t411/quote.jsp. Для другого бота будет свой URL, на другом сервере и т.д.
4. При задании реакции на ключевое слово в виде URL, можно указать сервису на необходимость передачи указанному CGI-скрипту текста входящего Twitter сообщения. В соответствии с этим, реакция для данного сток-бота задана в форме:
http://linkstore.ru/t411/quote.jsp?t=text
Сервис перед обращением к скрипту просто заменит переменную text текстом пришедшего сообщения. Например, для пришедшего запроса t JAVA запрос к CGI-скрипту будет выглядеть так: http://linkstore.ru/t411/quote.jsp?t=t%20JAVA. Теперь обратимся к нашему CGI-скрипту. В данном случае - это JSP файл, который ожидает получить запрос с параметром t, а значение этого параметра будет иметь следующий вид t биржевой_символ. Соответственно, скрипт (JSP файл в данном случае) должен прочитать значение параметра, выделить из него часть строки после символа t (биржевой символ), запросить для него котировки и вернуть результат. Вот так это выглядит, например:

<%@ page contentType="text/plain; charset=utf-8" %>
<%@ taglib uri="taglib27.tld" prefix="get" %>

<%
String t = request.getParameter("t");
if (t==null)
{ out.println("unknown");
return; }

// the pattern is: t <space> stock_symbol

int i = t.indexOf(" ");

if (i<=0)
{ out.println(t+"?? could not get ticket");
return; }

t = t.substring(i+1).trim();
%>

<get:Quote symbol="<%=t.toUpperCase()%>" id="A" />

<%=A.get(0)+": "+A.get(1)+" "+A.get(9)%>


Здесь JSP файл печатает текущую котировку и график (использовались пользовательские теги из Coldtags suite для запроса котировки).

Иными словами, все что нужно для создания Twitter-бота - это запрограммировать (взять готовый) CGI-скрипт, который может быть размещен на произвольном веб-хостинге.

No comments: