def handle_subscribe(msg):
    """Handle subscribe event. """
    tousername = msg_helper.get_value_by_key(msg, 'ToUserName')
    fromusername = msg_helper.get_value_by_key(msg, 'FromUserName')
    # Record into log
    MyLogger().getlogger().info('new subscriber:' + fromusername)
    # Reply welcome msg
    return msg_helper.reply_text_msg(fromusername, tousername, words.WORDS_WELCOME)
def process_msg(msg):
    """Dispatch msg to handlers."""
    outputmsg = ''
    msgtype = msg_helper.get_value_by_key(msg, 'MsgType')
    tousername = msg_helper.get_value_by_key(msg, 'ToUserName')
    fromusername = msg_helper.get_value_by_key(msg, 'FromUserName')

    # Msg handling.
    if msgtype == 'event':
        event = msg_helper.get_value_by_key(msg, 'Event')
        if event.lower() == 'subscribe':
            return handle_subscribe(msg)
        elif event.lower() == 'unsubscribe':
            return handle_unsubscribe(msg)
        elif event.lower() == 'click':
            eventkey = msg_helper.get_value_by_key(msg, 'EventKey')
            if eventkey == 'V1001_MY_PROFILE':
                pass   # do something
            else:
                MyLogger().getlogger().error('unknown eventkey:%s', eventkey)               
        else:
            MyLogger().getlogger().error('unknown event:%s', event)               
    elif msgtype == 'text':
        content = msg_helper.get_value_by_key(msg, 'Content')
        content = content.strip() # trim space
        # help 
        if content.lower() == 'h' or content.lower() == 'help':
            return msg_helper.reply_text_msg(fromusername, tousername, words.WORDS_HELP)
        else:
            return msg_helper.reply_text_msg(fromusername, tousername, words.WORDS_HELP)
    else:            
        return None
def handle_unsubscribe(msg):
    """Handle unsubscribe event. """
    fromusername = msg_helper.get_value_by_key(msg, 'FromUserName')
    MyLogger().getlogger().info('unsubscribe:' + fromusername)