 }
 
 /**
+ * //alias
+ * This method posts a message to a channel.
+ * @param {string} channelId Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.
+ * @param {string} text Text of the message to send. See below for an explanation of formatting.
+ * @param {Object} option optional please see https://api.slack.com/methods/chat.postMessage
+ * @return {Object} api result
+ */
+function postMessage(channelId, text , option) {
+    throw new Error("this method should not call direct, please call create method.")
+}
+
+/**
  * This method updates a message in a channel.
  * @param {string} channelId Channel containing the message to be updated.
  * @param {Number} timestamp Timestamp of the message to be updated.

    
        getCredencial_ : (name)=>
            return @cache[name] if @cache && @cache[name]
    
            credencial = @prop.getProperty("SLACK_credencial#{@option.name}")
            return null if !credencial?
            @cache = JSON.parse credencial
            return @cache[name]
        
        # authorize : ()=>
        #     res = @uox => UrlFetchApp.fetch "#{@API_ENDPOINT}/oauth.access" ,
        #         method : "post"

                    code : code
            @prop.setProperty("SLACK_credencial#{@option.name}", res.getContentText())
            return JSON.parse(res.getContentText()).access_token
        getAuthorizeUrl : (callback,optArg) =>
            redirectUri = @getCallbackURL(callback, optArg)
            @prop.setProperty("SLACK_redirectURI#{@option.name}", redirectUri)
            "#{@AUTH_ENDPOINT}?client_id=#{@clientId}&scope=#{@scopes.join(',')}&response_type=code&redirect_uri=#{redirectUri}"
        getCallbackURL : (callback,optArg = {}) ->
            url = ScriptApp.getService().getUrl()
            if url.indexOf("/exec") >= 0
