Javascript documentation
Options
Here is a full list of options you can use with the Javascript library:
<script type="text/javascript">
window.doorbellOptions = {
hideEmail: true, // Optional, hides the email address field
email: "customer@example.com", // Optional, prepopulate the email address field
name: 'Philip Manavopoulos', // Optional, the name of the user
tags: 'tag1,tag2', // Optional, tags to add to this thread. Can be an array as well: ['tag1', 'tag2']
hideButton: true, // Optional, hides the button that doorbell adds to the bottom right of the page
container: document.getElementById('feedback-container'), // Optional, make the form render inline instead of as a modal
language: 'en', // Optional, if you know the language of the page or the user. You can then translate the form, the response messages, and the autoreply
properties: { // Optional, a Javascript object of custom properties you want to set
loggedIn: true,
username: 'manavo',
loginCount: 11,
roles: ["admin", "editor"], // Arrays are fine
contactDetails: { // Nested objects are allowed too
phone: "1234567890",
address: "Address line 1, Country"
}
},
id: 'YOUR-ID-GOES-HERE',
appKey: 'YOUR-API-KEY-GOES-HERE'
};
</script>
Note: Please note that you should use the hideEmail option with the "email" value set, otherwise the field will be blank and the user won't be able to submit the form.
Note: There is no z-index
parameter. If it needs adjusting, you can do it from CSS (all elements get added to the DOM).
Note: In properties, arrays and nested objects will show up as pretty printed JSON.
Changing text in the form
You can change the text of the form or button in the Languages (i18n) section of your application's setup page.
Methods
There are there methods that you can call on the doorbell object:
show()
hide()
remove()
getProperty(name)
setProperty(name, value)
getOption(option)
setOption(option, value)
track(userID, eventName, attributes)
send(message, email)
refresh()
send
The send(message, email)
method accepts 2 parameters: the message you want to send, and the email address. This can be used if you want to have your own form instead of Doorbell's default one. However, you'll have to use the callbacks to handle success and failure messages yourself.
setOption
The setOption(option, value)
call, accepts 2 parameters: the option you want to set, and the value. This can be used if you have a single page app, so you can set the email address of the user who has logged in, or hide the email field after Doorbell has been initialized.
Example
<script type="text/javascript">
function showDoorbellModal() {
doorbell.show(); // The doorbell object gets created by the doorbell.js script
}
function removeDoorbell() {
doorbell.remove();
}
function sendFromMyForm() {
var feedbackText = document.getElementById('myTextarea').value;
var email = 'hello@example.com';
doorbell.send(feedbackText, email, function() {
alert('success');
}, function(error) {
alert('Oh no! '+error);
});
}
function setEmailAddress() {
doorbell.setOption('email', 'newemail@example.com');
}
function hideEmailField() {
doorbell.setOption('hideEmail', true);
}
function trackEvent() {
doorbell.track('user-123', 'logged_in', {'key': 'value'});
}
</script>
<button type="button" onclick="showDoorbellModal();">Show Doorbell form</button>
<button type="button" onclick="trackEvent();">Track event in Doorbell</button>
<button type="button" onclick="sendFromMyForm();">Send</button>
Callbacks
There are 11 callback methods you can set:
<script type="text/javascript">
window.doorbellOptions = {
// Optional, called when the SDK has loaded and is about to initialize
onLoad: function() {},
// Optional, called when the SDK has initialized (all elements added to the HTML)
onInitialized: function() {},
// Optional, called when the modal is about to be shown
onShow: function() {},
// Optional, called once the modal has been shown
onShown: function() {},
// Optional, called when the modal is about to be hidden
onHide: function() {},
// Optional, called once the modal has been hidden
onHidden: function() {},
// Optional, called when the feedback is about to be sent
// Return false to stop the request from happening
onSubmit: function() {},
// Optional, called when the feedback is sent successfully
onSuccess: function(message) {},
// Optional, called when the feedback fails to be sent
// Possible code values: 'missing-email', 'missing-message', 'message-too-short', 'invalid-email'
onError: function(code, message) {},
// Optional, called when a screenshot is about to be generated. Returning false cancels it
onGenerateScreenshot: function() {},
// Optional, callback when the screenshot is generated
onScreenshotGenerated: function(screenshotDataURI) {}
};
</script>
Single Page Applications
If you have a SPA, you might need to update some settings without refreshing the page.
You can call doorbell.refresh();
(after calling setOption
) to force Doorbell to regenerate the form with the new values.