אין מענה בשרת הapi, כתוב בc#
-
ניסיתי את הקוד של מאזין נלהב הזה:
בשרת כתבתי כך:const express = require("express"); const yemot_router = require("yemot-router"); const port = 3000; const app = express(); const y = yemot_router(); y.add_fn(async (call) => { let massage = [{ type: "text", data: "היי, תקיש 10" }]; let r = await call.read(massage); if(r.hangup) { return; } console.log(r); massage = [{ type: "text", data: "הקשת " + r.data }]; call.id_list_message(massage); }); app.use("/", y); app.listen(port, () => { console.log("lisen in port", port); });
ובמערכת מתחת ללינק כתבתי כך:
npm i yemot-router
וזה אומר אין מענה משרת
API
האם הקוד לא נכון או סיבה אחרת? -
@קו-מהיר אני לא יודע C# אבל ברור שהשורה הזו
npm i yemot-router
אמורה להיות בתחילת הקוד ולא בשלוחה במערכת.
יש לך שרת VPS או אחסון שיתופי? -
@מוטלה
יש לי שרת וורדפס חינמי -
@קו-מהיר אתה לא יכול להשתמש עם node / python.
תעבוד עם המחלקה הזאת
https://f2.freeivr.co.il/post/9067 -
@מוטלה
איפה לכתוב? ומה לכתוב במערכת?
חוץ מזה שאני רוצה שהמאזין יקיש מערכת וסיסמה, מה אני אמור לעשות??? -
@קו-מהיר ואז מה? להשמיע לו את זה?
-
@מוטלה
כן פשוט שיהיה אפשרות שמקיש מערכת ומשמיע ומבקש אישור ואח"כ סיסמא ומשמיע ומבקש אישור
התכוונת למחלקה הזאת?$SetSite = $_GET["SetSite"]; if ($SetSite == NULL) { define("URL", "https://www.call2all.co.il/ym/api/"); } if ($SetSite == "private") { define("URL", "https://www.private.call2all.co.il/ym/api/"); } class BodyPost { // part "multipart/form-data" public static function PartPost($name, $val) { $body = 'Content-Disposition: form-data; name="' . $name . '"'; // check instance of oFile if($val instanceof oFile) { $file = $val->Name(); $mime = $val->Mime(); $cont = $val->Content(); $body .= '; filename="' . $file . '"' . "\r\n"; $body .= 'Content-Type: ' . $mime ."\r\n\r\n"; $body .= $cont."\r\n"; } else $body .= "\r\n\r\n".$val."\r\n"; return $body; } public static function Get(array $post, $delimiter = '-------------0123456789') { if(is_array($post) && !empty($post)) { $bool = true; //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; }; if($bool) { $ret = ''; foreach($post as $name=>$val) $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val); $ret .= "--" . $delimiter . "--\r\n"; } else $ret = http_build_query($post); } else throw new \Exception('Error input param!'); return $ret; } } class oFile { private $name; private $mime; private $content; public function __construct($name, $mime=null, $content=null) { if(is_null($content)) { $info = pathinfo($name); // check is exist and readable file if(!empty($info['basename']) && is_readable($name)) { $this->name = $info['basename']; // get MIME $this->mime = mime_content_type($name); // load file $content = file_get_contents($name); if($content!==false) { $this->content = $content; } else { throw new Exception('Don`t get content - "'.$name.'"'); } } else { throw new Exception('Error param'); } } else { $this->name = $name; if(is_null($mime)) $mime = mime_content_type($name); $this->mime = $mime; $this->content = $content; }; } public function Name() { return $this->name; } public function Mime() { return $this->mime; } public function Content() { return $this->content; } } class connecting_to_yemot_api { public $token; const URL = URL; public function __construct($user_name, $password) { $body = array('username' => $user_name, 'password' => $password); $body = http_build_query($body); $opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded", 'content' => $body, 'follow_location' => false) ); $context = stream_context_create($opts); $url = self::URL.'Login'; $result = file_get_contents($url, FALSE, $context); $result = json_decode($result); if($result -> responseStatus == 'OK') { $this -> token = $result -> token; return TRUE; } else { throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים'); } } public function __destruct() { $this -> connecting('Logout'); } public function connecting($action, $body = array()) { $delimiter = '----'.uniqid(); $body['token'] = $this -> token; $body = BodyPost::Get($body, $delimiter); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter, 'content' => $body, 'follow_location' => false ) ); $context = stream_context_create($opts); $url = self::URL.$action; $result = file_get_contents($url, FALSE, $context); $headers = $this -> parseHeaders($http_response_header); if($headers['Content-Type'][0] == 'application/json') { return json_decode($result); } else { return $result; } } private function parseHeaders($headers) { // פונקציה שמקבלת מערך של שורות הכותרות // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד // מערך הכותרות $head = array(); foreach( $headers as $k=>$v ) { $t = explode( ':', $v, 2 ); if( isset( $t[1] ) ) { if($t[0] == 'Set-Cookie') { $CookiesArr = array(); $cookies = explode( ';', $t[1]); foreach($cookies as $cookie) { $c = explode( '=', $cookie); if( isset( $c[1] ) ) { $CookiesArr[ trim($c[0]) ] = trim( $c[1] ); } else { $CookiesArr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $CookiesArr; } elseif($t[0] == 'Content-Type') { $arr = array(); $children = explode( ';', $t[1]); foreach($children as $child) { $c = explode( '=', $child); if( isset( $c[1] ) ) { $arr[ trim($c[0]) ] = trim( $c[1] ); } else { $arr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $arr; } else { $head[ trim($t[0]) ] = trim( $t[1] ); } } else { $head[] = $v; if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) ) { $head['reponse_code'] = intval($out[1]); } } } return $head; } }
זה נראה ארוך מאוד מאוד!!!
-
@קו-מהיר כן, אבל בשביל זה לא צריך את המחלקה:
<?php $ApiDID = $_GET['ApiDID']; $password = $_GET['password']; if ($ApiDID == NULL){echo "read=t-אנא הקש את מספר המערכת שלך ובסיום הקש סולמית=ApiDID,no,10,9,7,No";exit();} if ($password == NULL){echo "read=t-נא הקש את סיסמת המערכת ובסיום הקש סולמית=password,no,,,7,No";exit();} ?>
בשלוחה אתה צריך להוסיף גם את זה
api_did_send=no
-
@מוטלה
ומה להגדיר אח"כ? אני רוצה שיהיה לו תפריט מסוים לדוג' האם להגדיר הגדרה מסוימת או לא וחוץ מזה, מה זה המחלקה לעיל? -
@קו-מהיר בקיצור, אתה צריך ללמוד php ואח"כ ללמוד איך להתממשק עם ימות. איפה אתה אוחז?
תראה כאן
https://f2.freeivr.co.il/post/36214 -
-
@קו-מהיר אותו דבר רק במקום לכתוב את הקוד בתוכנה אתה כותב ישירות בטופס php בשרת, ואח"כ את מריץ את הכתובת של הקובץ בדפדפן.
בשרת שלך למשל את מריץ את זה כך:https://******.000webhostapp.com/שם הקובץ.php
-
@מוטלה
את זה ידעתי, אבל האם לכתוב כתובת קובץ או תקייה והאם הסיומת PHP זה רק במערכת או גם בשרת? -
@קו-מהיר תפתח קובץ בשרת, תקרא לו בשם כל שהוא ובסיומת php.
שים לב שזה יהיה בתיקייתpublic_html
ואח"כ אתה מריץ ישירות בדפדפן את השם של הקובץ עם הסיומת. -
@מוטלה
אה, כי אני כתבתי את הקובץ בתקייה הראשית -
דרך אגב, למה שאני עושה שנה שם לקובץ הוא כותב לי כך:הזן שם חדש עבור שקר
-
@קו-מהיר נראה לי שגיאה בתרגום, תבטל את זה.
-
@מוטלה
אתה צודק, הוא מתרגם לי הכל גם את הקבצים של ה-PHP
איך אני מבטל? פשוט כששואל אם אנגלית או עברית ללחוץ עברית? -
@מוטלה
זה לא משמיע את המספר שהקיש! -
@קו-מהיר מה רשמת בקובץ?