Как реализовать скрипт, который прослушивает новую почту и затем выполняет действие - PullRequest
2 голосов
/ 15 апреля 2011

У меня настроен почтовый сервер apache James, и я хотел бы создать скрипт, который будет прослушивать новую почту, а затем связываться с сервером Asterisk, чтобы позвонить по номеру телефона пользователя и прочитать сообщение. Я предполагаю, что это возможно, но не могу найти никакой информации. Я использовал сценарии perl для других задач, поэтому, если бы я мог сделать это с помощью perl, это было бы здорово.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 08 мая 2013

Я думаю, что лучший способ сделать это - написать Mailet в java и поместить его в конфигурацию, чтобы он прослушивал все письма в корневом процессоре.

Для Apache James 3.0-beta5 шаги будут выглядеть примерно так:

  1. Напишите Mailet, т. Е.

    import org.apache.mailet.*;
    public class myMailet extends GenericMailet {
      private String aParameter;
      @Override
      public void init(MailetConfig cfg) throws MessagingException {
        super.init(cfg);
        aParameter = getInitParameter("myNeatParameter"); // use this if you need to use some parameters specified inside the mailetcontainer.xml
      }
    
      @Override
      public void service(Mail email) throws MessagingException {
        doYourThingWith(email);
      }
    
      private void doYourThingWith(Mail email){
        // TODO something with the email
      }
    }
    
  2. Соберите Mailet в файл jar

  3. Добавить полученный файл jar в папку / conf / lib

  4. Отредактируйте файл /conf/mailetcontainer.xml, в который вы бы добавили следующее:

    <mailet match="All" class="myMailet">
        <myNeatParameter>some value</myNeatParameter>
    </mailet>
    

    как дочерний элемент к корневому процессору (или как вы считаете правильным).

  5. Перезапустить Джеймса

Ну, это не сценарий, но это очень хорошее (если не самое лучшее) решение.

1 голос
/ 15 апреля 2011

Решение состоит в том, чтобы настроить задание cron для запуска сценария Perl, который использует что-то вроде Mail::POP3Client, чтобы проверять наличие новых сообщений и отправлять что-то в Asterisk, используя (возможно) Asterisk::AGI. Если модули CPAN не делают то, что вам нужно, вы всегда можете заставить скрипт perl выполнить system вызовы для взаимодействия с инструментами командной строки, способными проверять POP или взаимодействовать с Asterisk.

0 голосов
/ 16 июня 2011

Вы можете использовать Mail :: POP3Client , чтобы опросить почтовый ящик на наличие сообщений. Или, если почтовый ящик поддерживает IMAP, и вы хотите постоянно отслеживать его, используйте модуль IMAP, возможно, Net :: IMAP :: Simple ?

Я только что погуглил по [Asterisk Perl] и руководство под названием «Как написать приложение на Perl AGI» появилось на первой странице. В нем описано, как использовать модуль Asterisk :: AGI для подключения к серверу Asterisk с использованием Perl.

Наконец, вам понадобится приложение для преобразования текста в речь. Я уверен, что их много. Возможно, они не будут написаны на Perl, но для них могут существовать интерфейсы Perl.

...