Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Monday, 24 May 2021

Invoca acquires DialogTech for $100M to expand its conversational intelligence tools

On the heels of expanding its marketing call analytics platform last year to provide more insights to help those in sales, e-commerce and customer experience, Invoca is making its first acquisition to widen the net of companies that it targets. The company has acquired DialogTech, a startup that builds tools for marketers to analyze inbound phone calls and other contacts, in what TechCrunch understands to be a $100 million deal.

As part of the transaction, Santa Barbara-based Invoca will be divesting Swydo, a company that Chicago-based DialogTech acquired in 2018. Swydo — originally from The Netherlands — will remain a partner of Invoca’s, the company said.

Invoca has up to now focused on larger consumer-facing enterprises — its customers include the likes of ADT, AutoNation, DISH, TELUS, and The Home Depot — providing them with an AI-based platform that lets their marketing, sales and other teams analyze calls from consumer customers and provide call tracking, coaching, and other insights in real time and in the form of post-call reports to help those teams do their jobs more easily.

Gregg Johnson, Invoca’s CEO and one of growing pool of Salesforce veterans that are reinventing the marketing and sales technology landscape, described DialogTech as “complementary” to what Invoca does, but will specifically help Invoca better target mid-market companies.

The opportunity that both Invoca and DialogTech have identified is that, despite the growth of digital media advertising, social media and other channels for brands to connect to would-be customers, inbound calls remain a very key part of how companies sell goods and services, especially when the sale is of a complex item.

“About 40% to 80% of revenues come through contact centers,” Johnson said. “Brands can do all the retargeting they want but the same strategies in digital don’t work there.”

For those working at the other end of the line, the need for tools to do their jobs better became even more pressing in the last year, a time when customers stayed home and away from physical stores, shifting all of their interactions to virtual and remote channels. Subsequently, they demanded and expected better levels of service there.

“This move enables us to be an even better partner to enterprises and agencies looking to optimize their marketing and drive sales,” said DialogTech CEO, Doug Kofoid, in a statement. “Together as Invoca, our combined company will deliver an unrivaled solution for conversation intelligence, with the most innovative technology, expertise, experience, and resources in our industry.”

The combined business will become one of the bigger “martech” startups focusing on conversational insights, with 2,000 customers, over 300 employees and on track to make more than $100 million this year in revenue. This is, however, just the tip of the iceberg: the conversational intelligence market was estimated to be worth some $4.8 billion in 2020 and is expected to balloon to nearly $14 billion by 2025.

Given how many startups we’ve seen launch in the name of better sales intelligence, it’s likely that this will not be the last piece of consolidation in the area. Combining to expand the functionality of a platform, or to expand the scale and reach of a business, or simply to bring on interesting tech that is easier to acquire than build from scratch, are three areas that will likely drive more M&A.

Invoca last raised funding in October 2019, a $56 million round just ahead of the world shifting into Covid-19 pandemic mode. Johnson confirmed that Invoca — which has to date raised $116 million from Accel, Upfront Ventures, H.I.G. Growth Partners, Morgan Stanley, Salesforce Ventures and others — is in a strong enough position as a business not to need to raise more for this acquisition.

However, I suspect that scaling up like this will help it bid for bigger money and a bigger valuation when it does, as will the fact that peers in the market like Gong (which Johnson described as the “B2B version of Invoca” to me) have seen their valuations catapult in the last year, spurred by the changes in how customers interact with businesses, and sales and marketing can work to better serve them.



from TechCrunch https://ift.tt/3hNFX7o
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support