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();

Tuesday, 30 April 2019

Nigerian startup Tizeti launches WifiCall.ng IP voice call service

Nigeria based startup Tizeti, an internet service provider, today launched WifiCall.ng—an internet voice-calling platform for individuals and businesses.

WifiCall is a VoIP—or Voice over Internet Protocol—subscription service that allows unlimited calls to any phone number, even if that number isn’t registered on WifiCall’s network.

Tizeti will offer the product in Nigeria for now, with plans to open it up to phone numbers outside Africa’s most populous nation and largest economy in 2020.

WifiCall was influenced by popularity of WiFi enabled voice services such WhatsApp, in Africa, and the continent’s improving digital and mobile profile.

With its new VoIP product, Tizeti looks to contend with the likes of Skype, WhatsApp, and major telcos.

“On the low end we’re competing with the mobile providers. WifiCall gives you a real number and it’s cheaper. But we’re also offering enterprise options you would not get with a mobile connection or even WhatsApp,” Tizeti co-founder and CEO Kendall Ananyi told TechCrunch.

In addition to individual users, businesses and startups can use WifiCall for internal communications or open it up to developers to customize APIs for white-label, customer applications.

WifiCall is available online or for download for free under the “Basic” package. The entry level commercial “Business Unlimited Pro” package—that offers up to 10 users, call recording, and call analytics—goes for ₦15,000, or around $35 a month. 

Nigerian trucking logistic startup Kobo360 is already is a client. Ananyi sees prospective market segments for WifiCall as startups, educational institutions, hotels, gated communities, and “regular users anywhere they have tower coverage,” he said.

That last group ties into Tizeti’s core business, which is building solar powered towers that offer WiFi service packages and hotspots in and around Lagos and Ogun State, Nigeria. Since its launch from Y Combinator’s  winter 2017 batch, the company has installed over 12,000 public WiFi hotspots in Nigeria with 500,000 users. The startup packages internet services drawing on partnerships with West African broadband provider MainOne and Facebook’s Express Wi-Fi

Tizeti raised a $3 million Series A round in 2018, led by 4DX Ventures, and has $5.1 million in investment from firms including Golden Palm Investments, YC, and Social Investments.

4DX Ventures co-founder Walter Baddoo sees Tizeti’s voice calling as a strategic extension of its connectivity business (noting WifiCall can be used with any IP).

“The core of the company’s mission is to bring down the cost of connectivity on the continent by leveraging mobile internet and data networks, WifiCall is a step in that direction” Baddoo told TechCrunch. “Africa is going to leapfrog a lot of the traditional call infrastructure…and WiFi calling…is giving individuals, small-businesses, and large businesses one-stop for much cheaper data-service alongside voice.”

Though Sub-Saharan Africa still stands last in most global rankings for smartphone adoption (33 percent) and internet penetration (35 percent), the continent continues to register among the fastest growth in the world for both.

Mobile providers in Nigeria—such as MTN and Glo—are shifting customers from buying anonymous data-bundles to registered sim cards and subscription services. WiFi voice services are also commonly used across the continent for calls. Per We Are Social’s 2018 Digital Report, WhatsApp is the most downloaded messenger app across Africa.

On its internet service business, Tizeti has already expanded to Ghana with a consumer facing brand, Wifi-Africa, and looks to offer WifiCall there as soon as it gains regulatory approval—something in process, according to CEO Kendall Ananyi.

The startup is building an LTE network, to compliment its IP network, and plans to expand further into Nigeria with 5G offerings in the near future, according to Ananyi.

Tizeti also plans to open up its WifiCall product to phone numbers outside of Nigeria starting in 2020.  “The way Africa skipped landlines and went straight to mobile, this is us saying the next level for our voice communications is to move toward voice IP networks,” Ananyi said.

 

 

 

 

 

 

 

 

 

 

 

 

 



from TechCrunch https://tcrn.ch/2PHSkC8
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support