Contributions > Plugins, tips, and tricks

Using webim on several sites with one central operator console

(1/2) > >>

simplyfat:
i have two companies with one common backoffice/callcenter. there is no obvious relation between these two, so customers of company 1 should not see company name 2 in the live chat window and vice versa. the operators should not have to login into seperate consoles for each companies.

so here is my hack:

1) create a file called "custom.php" somewhere

--- Code: --- function text_verwursten($key, $val, $locale) {
$company = getCompanyDetails();

switch ($key) {
case 'chat.window.title.agent': case 'chat.window.title.user': case 'site.title':
return $company['name'];

case 'mail.user.history.subject':
return $company['name'] . ': ' . ($locale == 'de' ? 'Chat-Protokoll' : 'dialog history');

case 'site.url':
return $company['url'];

default:
return $val;
}
}

function settings_verwursten($key, $val) {
$company = getCompanyDetails();

switch ($key) {
case 'hosturl':
return $company['url'];
case 'title':
return $company['name'];
case 'logo':
return $company['logo'];
case 'email':
return $company['email'];
case 'chattitle':
return $company['name'] . ' ' . $val;
default:
return $val;
}
}

function getCompanyDetails() {
$ret = array();
switch ($_SERVER['SERVER_NAME']) {
case 'support.company1.com':
$ret['name'] = 'Company 1';
$ret['url'] = 'http://www.company1.com/';
$ret['email'] = 'mail@company1.com';
$ret['logo'] = 'http://www.company1.com/images/logo.jpg';
break;
default:
$ret['name'] = 'Company 2';
$ret['url'] = 'http://www.company2.com/';
$ret['email'] = 'mail@company2.com';
$ret['logo'] = 'http://www.company2.com/images/logo.jpg';
}
return $ret;
}

--- End code ---

2) go to webim/libs/common.php
3) add "require_once('/path/to/custom.php');" at the top
4) change one line in "load_messages"-function (see comment "CUSTOM")

--- Code: ---function load_messages($locale) {
global $messages, $webim_encoding, $output_encoding;
$hash = array();
$current_encoding = $webim_encoding;
$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties", "r");
while (!feof($fp)) {
$line = fgets($fp, 4096);
$keyval = split("=", $line, 2 );
if( isset($keyval[1]) ) {
$keyval[1] = text_verwursten($keyval[0], $keyval[1], $locale); // CUSTOM
if($keyval[0] == 'encoding') {
$current_encoding = trim($keyval[1]);
} else if($keyval[0] == 'output_encoding') {
$output_encoding[$locale] = trim($keyval[1]);
} else if( $current_encoding == $webim_encoding ) {
$hash[$keyval[0]] = str_replace("\\n", "\n",trim($keyval[1]));
} else {
$hash[$keyval[0]] = myiconv($current_encoding, $webim_encoding, str_replace("\\n", "\n",trim($keyval[1])));
}
}
}
fclose($fp);
$messages[$locale] = $hash;
}

--- End code ---

5) change one line in "loadsettings"-function (see comment "CUSTOM")

--- Code: ---function loadsettings() {
global $settingsloaded, $settings_in_db, $settings;
if($settingsloaded) {
return;
}
$settingsloaded = true;

$link = connect();
$sqlresult = mysql_query('select vckey,vcvalue from chatconfig',$link) or die(' Query failed: '.mysql_error().": ".$query);

while ($row = mysql_fetch_array($sqlresult, MYSQL_ASSOC)) {
$name = $row['vckey'];
$settings[$name] = settings_verwursten($name, $row['vcvalue']); // CUSTOM
$settings_in_db[$name] = true;
}
mysql_free_result($sqlresult);
mysql_close($link);
}

--- End code ---

spencer:
           Thanks for sharing the above mentioned codes.

wilson:
Hi

that is a very interesting hack no doubt :-)

So using your hack, with just one installation of webim we could attend "n" diferent sites?
And if so, how we could generate diferent codes to put the on/off line imagens on those sites?

Thanks

simplyfat:
this hack does only work with 1 company which has n different brandings. however you can use the group feature to have different on-/offline realms.
it is NOT suitable for a hosted solution or similar where many different companies use the service, because every operator can see each other.

r1:
Hello,
I need this feature for my clients. I am having few projects, and own operators. I need separated per domain site  but every data are in one domain (satellite).
Does anyone can write that for money? Regards.

Navigation

[0] Message Index

[#] Next page

Go to full version