Здравствуйте, уважаемые хабровчане!
На днях я написал простого бота для смс-переписки. Он может принимать входящие сообщения, обрабатывать их и (если слова из сообщения есть в его «памяти») отправлять назад логичные ответы.
Все, что мне понадобилось:
— Ubuntu 12.04 на домашнем компьютере
— Установленный gnokii (посмотреть как его установить можно тут)
— shell скрипт
— cron, регулярно запускающий этот скрипт
— телефон с деньгами на счету (подойдет почти любая старая Nokia с блютузом, а также SonyEricsson k серии)
— Bluetooth адаптер
— пара часов свободного времени.
+ Плюсом стало отсутствие необходимости в Интернет-подключении.
Если заинтересовались — прошу под кат.
Итак, начну с описания общей логики приложения, чтобы было сразу понятно что и зачем.
Есть сторонний абонент А.
Есть наш телефон — абонент B.
Наши действия.
1) Абонента B сопрягаем с компьютером по bluetooth стандартными средствами телефона, разрешаем ему автоматическую авторизацию.
2) Устанавливаем gnokii.
3) Создаем и даем права на исполнения скрипту sms_bot.sh:
#!/bin/bash
inp=$(gnokii --getsms IN 1 end) # считывает смску из памяти
echo $inp>/home/light204/Desktop/inp.txt #записывает ее в буферный файл
counter_love=$(grep -c люблю /home/light204/Desktop/inp.txt) #ищет ключевое слово в сообщении
counter_luba=$(grep -c Любу /home/light204/Desktop/inp.txt) #ищет ключевое слово в сообщении
counter_hello=$(grep -c привет /home/light204/Desktop/inp.txt) #ищет ключевое слово в сообщении
counter_good=$(grep -c хорошо /home/light204/Desktop/inp.txt) #ищет ключевое слово в сообщении
counter_name=$(grep -c зовут /home/light204/Desktop/inp.txt) #ищет ключевое слово в сообщении
killall gnokii #прерывает gnokii, чтобы дать ему запуститься для новой задачи
# в зависимости от того, какое слово встретилось в сообщении, отправляет тот или иной ответ.
if [ "$counter_love" == "1" ]; then
echo "Любить нужно людей, а я ПРОСТО КОМПЬЮТЕР!!! (надоело повторять)" | gnokii --sendsms '+7904xxxxxx'
elif [ "$counter_luba" == "1" ]; then
echo "Ладно, думаю, она не обидится :)" | gnokii --sendsms '+7904xxxxxx'
elif [ "$counter_hello" == "1" ]; then
echo "И тебе привет! Как дела твои?" | gnokii --sendsms '+7904xxxxxx'
elif [ "$counter_good" == "1" ]; then
echo "Что же, я очень рад за тебя! А я, вот, уже устал тут работать :(" | gnokii --sendsms '+7904xxxxxx'
elif [ "$counter_name" == "1" ]; then
echo "Меня Light204_comp зовут. Типа приятно познакомиться, хозяин ;)" | gnokii --sendsms '+7904xxxxxx'
fi
sleep 3
killall gnokii #прерывает gnokii, чтобы дать ему запуститься для новой задачи
gnokii --deletesms IN 1 end #очищает память телефона
#Все. Телефон готов к принятию следующего сообщения
4)Настраиваем cron на запуска скрипта sms_bot.sh каждую минуту, например.
5) Система должна заработать. Абонент А посылает смс абоненту B. Телефон абонента B принимает входящу смс, ее считывает скрипт, анализирует, отправляет ответ абоненту A, удаляет смску от абонента A.
P.S. Мой скрипт далек от совершенства, но это, скорее, тестовый вариант, чтобы работало. Кроме того, я думаю, что описанный тут комплекс вряд ли понадобится кому-то «as is», но, возможно, вы сможете переделать и/или адаптировать его под свои нужды.