ex_wechat v0.1.7 Wechat.Responder

Wechat.Responder is to make respond to wechat server. It can be used with server verify and other things. This module will automaticlly generate needed methods for your Phoenix controller.

For simple use:

  defmodule Demo.WechatController do
    # interact with user, return message to user
    use Wechat.Responder

     # function that parse and render wechat message
    import Wechat.Message
  end

More complex example(when receives text message from user, it will return a text message with reverse text):

  defmodule Wechat.CustomerWechatController do
    use Wechat.Web, :controller
    use Wechat.Responder

    import Wechat.Message

    defp on_text_responder(conn) do
      message = conn.assigns[:message]
      case message do
        %{content: "我要图"} ->
          reply_with(conn, generate_passive(message, msgtype: "news",
            articles: [
              %{ title: "sjsjssjsj", description: "xxxxlaldsaldskl",
                 picurl: "picurl", url: "http://baidu.com" },
              %{ title: "sjsjssjsj", description: "xxxxlaldsaldskl",
                 picurl: "picurl", url: "http://baidu.com" }
              ]))
        %{content: content} ->
          reply_with(conn, generate_passive(message, msgtype: "text",
             content: String.reverse(content)))
        _ ->
          conn
      end
    end
  end

There are several methods you can override:

  def on_text_responder(conn),         do: conn
  def on_image_responder(conn),        do: conn
  def on_voice_responder(conn),        do: conn
  def on_video_responder(conn),        do: conn
  def on_shortvideo_responder(conn),   do: conn
  def on_location_responder(conn),     do: conn
  def on_link_responder(conn),         do: conn
  def on_event_responder(conn),        do: conn

these methods must return a Plug.Conn, just choose what you need.