אין מענה בשרת הapi, כתוב בc#
-
@מוטלה
לא -
@bluma למה כאן
var Retval = "read=t-Hello I speak English=Digits,"+"no,9,1,7,Number,no,no,*/,&";
הוספת את זה
"+"
?
אני משתמש ב php ולא צריך את זה, לא נראה לי שבנקודה הזו יש הבדל. -
@קביעתא
כאשר נגשת לקישור הנ"ל
הפרויקט לא היה מורץ
ולכן השגיאה שאני מקבלת היא שונה
ז מה שהעתקתי מקודם -
@מוטלה
זה לא עוזר -
@bluma כשמריצים את הכתובת בדפדפן זה מופיע?
לא עשית תנאי כל שהוא לפני זה נכון? -
@מוטלה
איזה כתובת?
ומה צריך להופיע? -
אני צריכה לדעת בעצם
איזה טיפוס נתונים צריך להחזיר בcontroller
יתכן שזאת הבעיה שלי -
אין מי שיודע איזה תשובה צריך להחזיר בcontroller מc# כדי להתחבר עם ימות המשיח?
-
@bluma אמר באין מענה בשרת הapi, כתוב בc#:
אין מי שיודע איזה תשובה צריך להחזיר בcontroller מc# כדי להתחבר עם ימות המשיח?
לא מבין בכתיבת שרתים עם C#, אבל ימות צריכים לקבל plain text.
-
ניסיתי את הקוד של מאזין נלהב הזה:
בשרת כתבתי כך: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 -