EmailIncServlet

This is the Servlet for reading email attachment. If the attachment is an audio file, it is redirected to readEmailWave, which corresponds to ReadEmailWaveServlet.

 

Source Code

package vx.apps.email;

import java.io.PrintWriter;
import java.io.IOException;
import javax.servlet.http.*;
import javax.mail.*;


public class EmailIncServlet extends HttpServlet
{
  public void service(HttpServletRequest request, HttpServletResponse response)
    throws IOException
  {
    HttpSession session = request.getSession(true);
    EmailMessageReader emailReader = (EmailMessageReader) session.getAttribute("emailReader");
    if (emailReader == null) {
        emailReader = new EmailMessageReader();
        session.setAttribute("emailReader", emailReader);
    }

    PrintWriter pw = response.getWriter();

    pw.println("<?xml version=\"1.0\"?>");
    pw.println("<vxml version=\"1.0\">");

    EmailManager email_agent = EmailManager.getInstance(request);
    if (email_agent == null) {
        pw.println("</vxml>");
        return;
    }

    String indexstr = request.getParameter("index");

    String includeIndexStr = request.getParameter("includeidx");
    if (includeIndexStr == null)
        includeIndexStr = "0";
    int includeIndex = Integer.parseInt(includeIndexStr);

    Part include = emailReader.getIncludeFile(includeIndex);

    String nextstr = ((includeIndex == 0)? "" : "next");

    pw.println("<form>");
    pw.println("<var name=\"index\" expr=\"" + indexstr + "\"/>");
    pw.println("<var name=\"includeidx\" expr=\"" + includeIndexStr + "\"/>");

    if (include != null) {
        pw.println("<field name=\"wantReadFile\" type=\"boolean\">");
        pw.println(" <prompt>");
        if (includeIndex == 0) {
            pw.println("<audio src=\"audio/${GW_RECORDED_VOICE}/the.wav\"/>");
            pw.println("<audio src=\"audio/${GW_RECORDED_VOICE}/first.wav\"/>");
        }
        else {
            pw.println("<audio src=\"audio/${GW_RECORDED_VOICE}/the.wav\"/>");
            pw.println("<audio src=\"audio/${GW_RECORDED_VOICE}/next.wav\"/>");
        }
        pw.println("<audio src=\"audio/${GW_RECORDED_VOICE}/attached_filename_is.wav\"/>");
        try {
            pw.println(include.getFileName());
        }
        catch (MessagingException e) {
        }
        pw.println("<audio src=\"audio/${GW_RECORDED_VOICE}/do_u_want_to_hear_it.wav\"/>");
        pw.println("</prompt>");
        pw.println("<filled>");
        pw.println(" <if cond=\"!wantReadFile\">");
        pw.println(" <assign name=\"readFile\" expr=\"'skip'\"/>");
        pw.println(" </if>");
        pw.println("</filled>");
        pw.println("</field>");

        try {
            if (EmailMessageReader.isText(include)) {
                String includeText = (String) include.getContent();
                String[] incTexts = EmailMessageReader.breakup(includeText);
                if (includeText != null) {
                    pw.println("<field name=\"readFile\">");
                    pw.println(" <prompt>");
                    for (int i = 0; i < incTexts.length; i++) {
                        pw.println("<block>");
                        pw.println(incTexts[i]);
                        pw.println("</block>");
                    }
                    pw.println(" </prompt>");
                    pw.println(" <dtmf>#</dtmf>");
                    pw.println(" <noinput>");
                    pw.println(" <assign name=\"readFile\" expr=\"'done'\"/>");
                    pw.println(" </noinput>");
                    pw.println("</field>");
                }
            }
            else if (EmailMessageReader.isWave(include)) {
                pw.println("<block name=\"readFile\">");
                pw.println("<submit next=\"readEmailWave\" namelist=\"index includeidx\"/>");
                pw.println("</block>");
            }
        }
        catch (MessagingException e) {
        }

        pw.println("<block>");
        pw.println(" <assign name=\"includeidx\" expr=\"includeidx + 1\"/>");
        pw.println(" <submit next=\"email_inc\" namelist=\"index includeidx\"/>");
        pw.println("</block>");
    }
    else {
        pw.println("<block>");
        pw.println(" <submit next=\"email_cnt_end\" namelist=\"index\"/>");
        pw.println("</block>");
    }

    pw.println("</form>");
    pw.println("</vxml>");
  }
}