Как стать автором
Обновить

Комментарии 22

Офигенно! Не так давно тоже думал написать что-то подобное, но руки, как всегда, не дошли =)
Это что бы девушка не скучала, пока вы не можете отвечать на ее смс? :)
А как вы номер телефона отправителя получаете?
Видимо, подразумевается что этот номер знает только девушка=)
Нет, получается что на все смс с разных номеров бот будет бомбить один и тоже
Я и не утверждал обратного=)
Впрочем, ниже автор ответил
Кстати, кому не важно наличие интернета, может пригодиться вот такой вот gem: rubygems.org/gems/smsforall (небольшой самопиар :) ) Стоимость отправки СМС до 30 копеек.
billpnz прав. Тут я номер отправителя не получаю никак, но, вообще, он записывается в inp.txt
Полная запись смски содержит и номер отправителя, и время, и даже временной пояс. Вырезать номер средствами bash не сложно. Возможно, я модифицирую бота.
Организовал подобное используя gammu и подключенный к USB Motorola V3i с убитым шлейфом экрана. Изначально писал скрипт для одной знакомой на курсовую, для получения расписания пар в институте по коду специальности и дню недели. Следом доработал его для получения статистики по серверу (df, top, lmsensors, ...), конечно используя grep для формирования миннималистичного сообщения. По крону запускался скрипт отправки USSD запроса — получение баланса по счету, и отправки sms/email при его приближении к 0-лю. В целом использование подобного скрипта ограничивается лишь фантазией человека.
Порадовала ссылка на статью по gnokii. Я эту статью пару лет назад писал для Open Source. За время копипастов в Сети статья уже перестала быть похожей на изначальный вариант. :)

Я лично отказался от gnokii в пользу SMS-сервисов (а-ля ТурбоСМС, АльфаСМС и тд).
Сорри что через столько лет. А причины, по которым отказались есть? Не удобство в работе, или еще что?
Да, проще и удобней.
Да, только и сами по себе сервисы платные.
И ваша ссылка сейчас, уже не работает )
Только тут что-то гуглится:
http://samag.ru/forum/message/1276
Не так уж и дорого.
все относительно )
Да. в больших объемах и когда не проблема оплачивать счета — спец сервисы выгоднее и дешевле.
Не сочтите за занудство, но скрипт можно упростить…
#!/usr/bin/env bash

PHONE_NUMBER="+7904xxxxxx"
BUFFER=$(gnokii --getsms IN 1 end)

function do_send_message () {
	# do_send_message $phone_number $message
	echo $2 | gnokii --sendsms $1;
}

if [[ "$BUFFER" == *"Люба"* ]]; then
	do_send_message $PHONE_NUMBER "бла бла бла"
elif [[ "$BUFFER" == *"Любовь"* ]]; then
	do_send_message $PHONE_NUMBER "другой ответ"
fi

Спасибо, я учту это в следующей версии.
Тогда на статью не потянет.
Кстати, люди, я хотел бы предложить не бросать это дело вот так, а довести до ума. У меня, просто, сейчас не будет достаточно много свободного времени (учеба, военка, работа, автошкола и т.д.), а вместе было бы в разы легче.
Задачи, что нужно решить в первую очередь (ИМХО):
— внести изменения avalak'a (это не проблема)
— сделать его более «умным», т.е. научить отвечать на большее количество вопросов.

Ваши идеи можно написать и тут в комментах, а можно мне в личку. Доведем до ума и поделимся с сообществом версией 2.0. Что думаете о моем предложении?
А зачем?
У меня до боли похожая бяка работает уже почти год на работе.
Умеет отвечать на запросы balance, news и другие в связке с биллингом.
Написано, конечно, не совсем красиво, просьба не пинать…
По выходным веду что-то вроде радиокружка и изначально скрипт писался как пример для демонстрации отправки и обработки запросов по контролю 1-Wire устройств, подключенных к роутеру с GPRS модемом.

В используемых нами 3G USB свистках, тип памяти нужно указывать SM, а не IN как у автора топика.
Нумерация сообщений так-же у нас отличается и начинается с нуля.
При получении сообщения, скрипт обрабатывает его и сразу удаляет.
Так-же есть перевод заглавных букв, если такие попадутся, в прописные.
Ну и ведется простейший лог-фаил (не забудьте подправить путь к файлу на свой).

#!/bin/sh
#
# Created by ZigFisher
# 2011.09.11 v.0.1
#

CONFIG=/etc/gnokiirc
MEMTYPE=SM  # use ME, SM, IN, OU
INCOMING=$(gnokii --config $CONFIG --getsms $MEMTYPE 0 && gnokii --config $CONFIG --deletesms $MEMTYPE 0)
ABONENT=$(echo $INCOMING | awk '{print $10}' | grep '+')
REQUEST=$(echo $INCOMING | awk '{print $15}' | tr 'A-Z' 'a-z')
LOGFILE='/home/zig/gnokii.log'

echo "$ABONENT => $REQUEST" >>$LOGFILE

reply() {
    echo $2 | gnokii --config $CONFIG --sendsms $1
    echo "I send       => $2" >>$LOGFILE
}

if [ "$REQUEST" = "balance" ]; then
    reply $ABONENT "Ваш баланс..."
elif [ "$REQUEST" = "news" ]; then
    reply $ABONENT "Новости и акции..."
fi
А как в в gnokii принять длинное сообщение с модема? Оно приходит несколькими кусками с параметрами Linked.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории