-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbot-service.js
More file actions
125 lines (110 loc) · 3.4 KB
/
bot-service.js
File metadata and controls
125 lines (110 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//load modules
var request = require('request');
var jsonfile = require('jsonfile');
var questions = require('./bot-static-questions');
var template = require('./bot-template-manager');
var _ = require('underscore');
var firebaseHelper = require('./bot-db-helper');
//global variables
var tmplType = {
"text":"getTmplText",
"optionList":"getTmplOptionList",
"carouselList":"getTmplCarouselList",
"datePickerList":"getTmplDatePicker",
"receipt":"getTmplReceipt",
"userProfile":"getUserProfile",
"quickReply":"getTmplQuickReply",
"login":"getLoginTemplate"
};
//export modules
module.exports = {
saveConversation: function (chatData,userProfile) {
var fileName = 'data/' + (userProfile.first_name.replace(/ /g,'')) + '_' + (new Date().getTime())+ '.json';
jsonfile.writeFile(fileName, chatData, {spaces: 4}, function(err) {
console.error(err);
})
},
saveChatObj : function(question,userObj, CONFIG,data){
//create chat object
var chatDataObj = {
"userId" : userObj.userId,
"question" : question,
"answer" : data.answer,
"key" : data.key
};
//save to firebase
firebaseHelper.saveChat(chatDataObj);
},
prepareCustomList : function(list){
var objList = [];
for (var i = 0,j=1; i < list.length; i++,j++) {
var obj = {
"title":list[i].name,
"image_url":list[i].image,
"subtitle":list[i].subtitle,
"buttons":[{
"type":"postback",
"payload":j,
"title":"Select Meal"
}]
};
objList.push(obj);
}
return objList;
},
sendMessage : function(message,userObj, CONFIG,data) {
var _this = this,
userName = userObj.profile ? userObj.profile.first_name : "there",
tmplData = template[tmplType[data.tType]](data,userName);
return request({
url: 'https://graph.facebook.com/v2.6/me/messages',
qs: {access_token:CONFIG.accessToken},
method: 'POST',
json: {
"recipient": { id : userObj.userId },
"message": tmplData,
}
}, function(error, response, body) {
if (error) {
console.log('Error sending messages: ', error);
} else if (response.body.error) {
console.log('Error: ', response.body.error);
}else{
console.log('Message sent as : ', data.answer);
//save chat to firebase
// _this.saveChatObj(message,userObj, CONFIG,data);
}
})
},
getUserProfile : function(token,userId) {
return request({
url: 'https://graph.facebook.com/v2.6/' + userId,
qs: {access_token:token},
method: 'GET',
json: {
fields: "first_name,last_name,profile_pic,locale,timezone,gender"
}
});
},
sendPlainMessage : function(userId, CONFIG,msg) {
request({
url: 'https://graph.facebook.com/v2.6/me/messages',
qs: {
access_token: CONFIG.accessToken
},
method: 'POST',
json: {
recipient: { id: userId },
message: { text: msg }
}
}, function(error, response, body) {
if (error) {
console.log('Error sending messages: ', error);
} else if (response.body.error) {
console.log('Error: ', response.body.error);
}else{
console.log('Message sent');
}
})
}
};