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

Facebook Messenger will get desktop apps, co-watching, emoji status

To win chat, Facebook Messenger must be as accessible as SMS, yet more entertaining than Snapchat. Today, Messenger pushes on both fronts with a series of announcements at Facebook’s F8 conference, including that it will launch Mac and PC desktop apps, a faster and smaller mobile app, simultaneous video co-watching and a revamped Friends tab, where friends can use an emoji to tell you what they’re up to or down for.

Facebook is also beefing up its tools for the 40 million active businesses and 300,000 businesses on Messenger, up from 200,000 businesses a year ago. Merchants will be able to let users book appointments at salons and masseuses, collect information with new lead generation chatbot templates and provide customer service to verified customers through authenticated m.me links. Facebook hopes this will boost the app beyond the 20 billion messages sent between people and businesses each month, which is up 10X from December 2017.

“We believe you can build practically any utility on top of messaging,” says Facebook’s head of Messenger Stan Chudnovsky. But he stresses that “All of the engineering behind it is has been redone” to make it more reliable, and to comply with CEO Mark Zuckerberg’s directive to unite the backends of Messenger, WhatsApp and Instagram Direct. “Of course, if we didn’t have to do all that, we’d be able to invest more in utilities. But we feel that utilities will be less functional if we don’t do that work. They need to go hand-in-hand together. Utilities will be more powerful, more functional and more desired if built on top of a system that’s interoperable and end-to-end encrypted.”

Here’s a look at the major Messenger announcements and why they’re important:

Messenger Desktop – A stripped-down version of Messenger focused on chat, audio and video calls will debut later this year. Chudnovsky says it will remove the need to juggle and resize browser tabs by giving you an always-accessible version of Messenger that can replace some of the unofficial knock-offs. Especially as Messenger focuses more on businesses, giving them a dedicated desktop interface could convince them to invest more in lead generation and customer service through Messenger.

Facebook Messenger’s upcoming desktop app

Project Lightspeed – Messenger is reengineering its app to cut 70 mb off its download size so people with low-storage phones don’t have to delete as many photos to install it. In testing, the app can cold start in merely 1.3 seconds, which Chudnovsky says is just 25 percent of where Messenger and many other apps are today. While Facebook already offers Messenger Light for the developing world, making the main app faster for everyone else could help Messenger swoop in and steal users from the status quo of SMS. The Lightspeed update will roll out later this year.

Video Co-Watching – TechCrunch reported in November that Messenger was building a Facebook Watch Party-style experience that would let users pick videos to watch at the same time as a friend, with reaction cams of their faces shown below the video. Now in testing before rolling out later this year, users can pick any Facebook video, invite one or multiple friends and laugh together. Unique capabilities like this could make Messenger more entertaining between utilitarian chat threads and appeal to a younger audience Facebook is at risk of losing.

Watch Videos Together on Messenger

Business Tools – After a rough start to its chatbot program a few years ago, where bots couldn’t figure out users’ open-ended responses, Chudnovsky says the platform is now picking up steam with 300,000 developers on board. One option that’s worked especially well is lead-generation templates, which teach bots to ask people standardized questions to collect contact info or business intent, so Messenger is adding more of those templates with completion reminders and seamless hand-off to a live agent.

To let users interact with appointment-based businesses through a platform they’re already familiar with, Messenger launched a beta program for barbers, dentists and more that will soon open to let any business handle appointment booking through the app. And with new authenticated m.me links, a business can take a logged-in user on their website and pass them to Messenger while still knowing their order history and other info. Getting more businesses hooked on Messenger customer service could be very lucrative down the line.

Appointment booking on Messenger

Close Friends and Emoji Status – Perhaps the most interesting update to Messenger, though, is its upcoming effort to help you make offline plans. Messenger is in the early stages of rebuilding its Friends tab into “Close Friends,” which will host big previews of friends’ Stories, photos shared in your chats, and let people overlay an emoji on their profile pic to show friends what they’re doing. We first reported this “Your Emoji” status update feature was being built a year ago, but it quietly cropped up in the video for Messenger Close Friends. This iteration lets you add an emoji like a home, barbell, low battery or beer mug, plus a short text description, to let friends know you’re back from work, at the gym, might not respond or are interested in getting a drink. These will show up atop the Close Friends tab as well as on location-sharing maps and more once this eventually rolls out.

Messenger’s upcoming Close Friends tab with Your Emoji status

Facebook Messenger is the best poised app to solve the loneliness problem. We often end up by ourselves because we’re not sure which of our friends are free to hang out, and we’re embarrassed to look desperate by constantly reaching out. But with emoji status, Messenger users could quietly signal their intentions without seeming needy. This “what are you doing offline” feature could be a whole social network of its own, as apps like Down To Lunch have tried. But with 1.3 billion users and built-in chat, Messenger has the ubiquity and utility to turn a hope into a hangout.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support