我正在使用名为 vLine 的 js API 制作工具,但这是 javascript 的基本问题,所以我在这里发布。
我想在示例代码上附加聊天系统。我在///chat 函数之间添加了什么
但
this.prototype.onMessage_
显示错误
Uncaught TypeError: Cannot set property 'onMessage_' of undefined
虽然我做了一些javascript编程,但我不擅长这个。所以我想我不明白,一些非常基本的面向对象的javascript。
请帮我。
<script>
var vlineClient = (function(){
if('{{vlineData.serviceId}}' == 'YOUR_SERVICE_ID' || '{{vlineData.serviceId}}' == 'YOUR_SERVICE_ID'){
alert('Please make sure you have created a vLine service and that you have properly set the $serviceID and $apiSecret variables in classes/Vline.php file.');
}
var client, vlinesession,
authToken = '{{ vlineData.authToken }}',
serviceId = '{{ vlineData.serviceId }}',
profile = {"displayName": '{{ vlineData.displayName }}', "id": '{{ vlineData.id }}'};
// Create vLine client
window.vlineClient = this.client_ = vline.Client.create({"serviceId": serviceId, "ui": true});
// Add login event handler
this.client_.on('login', onLogin);
this.client_.login(serviceId, profile, authToken).done(this.init_,this);
// Do login
**/////chat function**
this.prototype.onMessage_ = function(event) {
var msg = event.message,
sender = msg.getSender();
console.log('get message');
this.showAlert(sender.getDisplayName(),
sender.getThumbnailUrl(),
msg.getBody());
};
this.client_.on('recv:im', this.onMessage_, this);
**/////chat function**
function onLogin(event) {
vlinesession = event.target;
// Find and init call buttons and init them
$(".callbutton").each(function(index, element) {
initCallButton($(this));
});
}
// add event handlers for call button
function initCallButton(button) {
var userId = button.attr('data-userid');
// fetch person object associated with username
vlinesession.getPerson(userId).done(function(person) {
// update button state with presence
function onPresenceChange() {
if(person.getPresenceState() == 'online'){
button.removeClass().addClass('active');
}else{
button.removeClass().addClass('disabled');
}
button.attr('data-presence', person.getPresenceState());
}
// set current presence
onPresenceChange();
// handle presence changes
person.on('change:presenceState', onPresenceChange);
// start a call when button is clicked
button.click(function() {
if (person.getId() == vlinesession.getLocalPersonId()) {
alert('You cannot call yourself. Login as another user in an incognito window');
return;
}
if(button.hasClass('active'))
**/////chat function**
person.postMessage("Hello there");
console.log("send message");
**////chat function**
person.startMedia();
});
});
}
return client;
})();
$(window).unload(function() {
vlineClient.logout();
});