diff --git a/README.md b/README.md
index a6ca02a..6d0402e 100644
--- a/README.md
+++ b/README.md
@@ -106,3 +106,11 @@ slack.send('chat.postMessage', message).then(data => {
 // respond to webhooks
 slack.send('https://hooks.slack.com/services/T0000/B000/XXXX', message);
 ```
+You can also respond to events directly without an API call using the callback method. This is useful if you need the `in_channel` response type to show the users slash command too.
+```js
+// Example for a command that takes a name eg: /greet Bob
+slack.on('/greet', msg => slack.callback({ 
+  response_type: 'in_channel', 
+  text: `Hey there ${msg.text}!`
+}))
+```
diff --git a/src/client.js b/src/client.js
index a3f6223..0ca08b0 100644
--- a/src/client.js
+++ b/src/client.js
@@ -127,7 +127,12 @@ class Client {
     message = Object.assign({ token: this.token, channel: this.channel }, message);
 
     // convert json except when passing in a url
-    if (!endPoint.match(/^http/i)) message = qs.stringify(message);
+    if (!endPoint.match(/^http/i)) {
+      if (message.attachments) {
+        message.attachments = JSON.stringify(message.attachments).replace(/^'(.*)'$/, '$1');
+      }
+      message = qs.stringify(message);
+    }
     return this.api.post(endPoint, message).then(this.getData);
   }
 
@@ -209,4 +214,4 @@ class Client {
 }
 
 
-module.exports = Client;
\ No newline at end of file
+module.exports = Client;
diff --git a/src/index.js b/src/index.js
index bdf70b6..c501bfb 100644
--- a/src/index.js
+++ b/src/index.js
@@ -20,7 +20,8 @@ class Slack extends EventEmitter {
    * @param {Object} context - The Lambda context
    * @param {Function} callback - The Lambda callback
    */
-  handler(event, context, callback) {     
+  handler(event, context, callback) {
+    this.callbackFn = callback;
     switch(event.method) {
       case "GET": this.oauth(event, context, callback); break;
       case "POST": this.event(event, context, callback); break;
@@ -28,6 +29,16 @@ class Slack extends EventEmitter {
   }
 
 
+  /**
+   * Allow event handlers to use the callback early
+   *
+   * @param {Object} response A response object or string
+   */
+  callback(response) {
+    if (this.callbackFn) this.callbackFn(null, JSON.stringify(response));
+  }
+
+
   /**
    * OAuth Lambda Handler
    *
@@ -88,8 +99,6 @@ class Slack extends EventEmitter {
     // Events API challenge
     if (payload.challenge)
       return callback(null, payload.challenge);
-    else
-      callback();
 
     // Ignore Bot Messages
     if (!this.ignoreBots || !(payload.event || payload).bot_id) {
@@ -129,4 +138,4 @@ class Slack extends EventEmitter {
 
 }
 
-module.exports = new Slack();
\ No newline at end of file
+module.exports = new Slack();