Comments 22
Офигенно! Не так давно тоже думал написать что-то подобное, но руки, как всегда, не дошли =)
Это что бы девушка не скучала, пока вы не можете отвечать на ее смс? :)
А как вы номер телефона отправителя получаете?
Кстати, кому не важно наличие интернета, может пригодиться вот такой вот gem: rubygems.org/gems/smsforall (небольшой самопиар :) ) Стоимость отправки СМС до 30 копеек.
billpnz прав. Тут я номер отправителя не получаю никак, но, вообще, он записывается в inp.txt
Полная запись смски содержит и номер отправителя, и время, и даже временной пояс. Вырезать номер средствами bash не сложно. Возможно, я модифицирую бота.
Полная запись смски содержит и номер отправителя, и время, и даже временной пояс. Вырезать номер средствами bash не сложно. Возможно, я модифицирую бота.
Организовал подобное используя gammu и подключенный к USB Motorola V3i с убитым шлейфом экрана. Изначально писал скрипт для одной знакомой на курсовую, для получения расписания пар в институте по коду специальности и дню недели. Следом доработал его для получения статистики по серверу (df, top, lmsensors, ...), конечно используя grep для формирования миннималистичного сообщения. По крону запускался скрипт отправки USSD запроса — получение баланса по счету, и отправки sms/email при его приближении к 0-лю. В целом использование подобного скрипта ограничивается лишь фантазией человека.
Порадовала ссылка на статью по gnokii. Я эту статью пару лет назад писал для Open Source. За время копипастов в Сети статья уже перестала быть похожей на изначальный вариант. :)
Я лично отказался от gnokii в пользу SMS-сервисов (а-ля ТурбоСМС, АльфаСМС и тд).
Я лично отказался от gnokii в пользу SMS-сервисов (а-ля ТурбоСМС, АльфаСМС и тд).
Не сочтите за занудство, но скрипт можно упростить…
#!/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. Что думаете о моем предложении?
Задачи, что нужно решить в первую очередь (ИМХО):
— внести изменения avalak'a (это не проблема)
— сделать его более «умным», т.е. научить отвечать на большее количество вопросов.
Ваши идеи можно написать и тут в комментах, а можно мне в личку. Доведем до ума и поделимся с сообществом версией 2.0. Что думаете о моем предложении?
У меня до боли похожая бяка работает уже почти год на работе.
Умеет отвечать на запросы balance, news и другие в связке с биллингом.
Написано, конечно, не совсем красиво, просьба не пинать…
По выходным веду что-то вроде радиокружка и изначально скрипт писался как пример для демонстрации отправки и обработки запросов по контролю 1-Wire устройств, подключенных к роутеру с GPRS модемом.
В используемых нами 3G USB свистках, тип памяти нужно указывать SM, а не IN как у автора топика.
Нумерация сообщений так-же у нас отличается и начинается с нуля.
При получении сообщения, скрипт обрабатывает его и сразу удаляет.
Так-же есть перевод заглавных букв, если такие попадутся, в прописные.
Ну и ведется простейший лог-фаил (не забудьте подправить путь к файлу на свой).
Умеет отвечать на запросы 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.
Sign up to leave a comment.
Простой смс-бот на shell