メニュー

Expand
ページを評価:

Function 実行

開発者のTwilio Functionのコードの呼び出しプロセスは極めてシンプルです。 元来からTwilio Functionの軽量な環境は、開発者に必要なすべての柔軟性を提供します。 このまま読み進めて、Twilioが開発者のコードを実行する仕組みを習得してください。

Functionの呼び出しフロー

呼び出しの過程で、以下のステップが行われます:

  1. 環境のブートストラップ - Twilio Function環境がブートストラップされ、Functionのコードが依存する可能性のあるリソースが迅速に初期化されます。
  2. Handler Execution - The Twilio Environment will then execute the exports.handler() method and provide the context, event and callback parameters.
  3. Response Emitted - When your Twilio Function code has completed, you call the callback() method to emit your response. After executing the callback() method, your Twilio Function execution will be terminated. This includes any asynchronous processes that may still executing.

ハンドラーメソッド

ハンドラーメソッドはTwilio Functionsと開発者のアプリケーションロジックとのインターフェイスです。 ハンドラーメソッドは、アプリケーションへのエントリーポイントとみなすことができます。 これはいくぶん、Javaにおけるmain()関数や、Pythonにおける__init__に例えることができるでしょう。

Twilio Functionsは、開発者のアプリケーションロジックに実行の制御を移す準備が整った際にハンドラーメソッドを実行します。 開発者のFunctionコードにハンドラーメソッドが含まれていないと、Twilio Functionsはロジックを実行することができず、HTTP 500をエミットします。

ハンドラー引数

引数 Type 概要
context object 現在の実行環境の情報が含まれます
event object Twilio Functionに渡されたリクエストパラメーターが含まれます
callback function 実行の完了とレスポンスのエミットに使用される関数です
        
        
        
        Twilio Functionのハンドラーメソッドのひな形

        ハンドラーメソッドのひな形

        Twilio Functionのハンドラーメソッドのひな形

        Contextオブジェクト

        Twilio Functions provides the context object as an interface between the current execution environment and the handler method. The context object provides access to helper methods as well as your Environment Variables.

        ヘルパーメソッド

        The context object provides helper methods that preinitialize common utilities and clients that you might find useful when building your application. These helper methods extract all their required configuration from Environment Variables.

        Method Type 概要
        getTwilioClient() Twilio RESTヘルパー アカウントのクレデンシャルをFunction内にインクルードしている場合、初期化済みのTwilio RESTヘルパーライブラリーを返します。 もしFunctionでアカウントのクレデンシャルをインクルードしていない場合、このメソッドの呼び出しはエラーとなります。 コード内でこのエラーをキャッチしない場合、HTTP 500レスポンスとなります。
              
              
              
              組み込みのTwilio RESTヘルパーの使用例

              環境変数

              Developers are encouraged to use Environment Variables to separate their code from configuration. Using Environment Variables ensures that your code is portable and that simple configuration changes can be made instantly.

              For a more in-depth explanation and examples, refer to the Environment Variables documentation.

                    
                    
                    
                    既定の環境変数にアクセスする方法の例

                    既定の環境変数からRuntimeのドメインを取得する

                    既定の環境変数にアクセスする方法の例
                          
                          
                          
                          環境変数にアクセスする方法の例

                          環境変数を取得する

                          環境変数にアクセスする方法の例

                          Eventオブジェクト

                          The event object contains the request parameters passing into your Function. Both POST and GET parameters will be collapsed into the same object. For POST requests, you can pass either form encoded parameters or JSON documents; both will be collapsed into the event object. Currently, it is not possible to access request headers in the function execution context.

                          Callback関数

                          When you have finished processing your request, you need to invoke the callback function to emit a response and complete execution. The callback method will automatically determine the data type of your response and serialize the output appropriately.

                          You must invoke the callback method when your Function is done processing. Failure to invoke callback will cause your Function to continue running up to the 10 second execution time limit. When your Function reaches the execution time limit, it will be terminated, and a 504 Gateway timeout will be returned to the client.

                          Callbackと非同期についての制限

                          It is important to note that when the callback function is invoked, it will terminate all execution of your Function. This includes any asynchronous processes you may have kicked off during during the execution of your handler.

                          For this reason, if you are using libraries that are natively asynchronous, you need to nest your call to the callback function inside the promise handler.

                                
                                
                                
                                非同期HTTPリクエストでcallback()を適切に使用する方法の例

                                非同期HTTPリクエストで実行を完了する

                                非同期HTTPリクエストでcallback()を適切に使用する方法の例

                                Callbackの引数

                                引数 Type 概要
                                error string|null 実行時に発生した問題を示すエラーです。 これによってクライアントは、指定されたペイロードを伴ったHTTP 500レスポンスを受信します。
                                response string|object|null Functionによって生成された成功のレスポンスです。 この引数を渡すことでクライアントは、指定された値を含むHTTP 200レスポンスを受信します。
                                      
                                      
                                      
                                      空のHTTP 200 OKの返し方の例

                                      シンプルな成功レスポンス

                                      空のHTTP 200 OKの返し方の例
                                            
                                            
                                            
                                            HTTP 500エラーでエラーメッセージを返す方法の例

                                            エラーレスポンスを返す

                                            HTTP 500エラーでエラーメッセージを返す方法の例
                                                  
                                                  
                                                  
                                                  HTTP 200 OKでプレーンテキストを返す例

                                                  プレーンテキストの成功レスポンスを返す

                                                  HTTP 200 OKでプレーンテキストを返す例
                                                        
                                                        
                                                        
                                                        HTTP 200 OKでTwiMLを返す方法の例

                                                        TwiMLの成功レスポンスを返す

                                                        HTTP 200 OKでTwiMLを返す方法の例
                                                              
                                                              
                                                              
                                                              HTTP 200 OKでJSONを返す方法の例

                                                              JSONの成功レスポンスを返す例

                                                              HTTP 200 OKでJSONを返す方法の例

                                                              レスポンスの組み立て

                                                              場合によっては、Functionがエミットするレスポンスを細かく制御する必要がある可能性があります。 このような場合、既定でFunctionにインクルードされるTwilio Responseオブジェクトを使用できます。

                                                              By using the Twilio Response object, you will be able to specify the status code, headers, and body of your response. You can begin constructing a custom response by creating a new Twilio Response object, like so:

                                                              const response = new Twilio.Response();

                                                              Twilio Responseメソッド

                                                              Method リターンタイプ 概要
                                                              setStatusCode(int) self HTTPレスポンスにステータスコードを設定する
                                                              setBody(mixed) self Sets the body of the HTTP response. Takes either an object or string. When setting the body to anything other than text, make sure to set the corresponding Content-Type header with appendHeader()
                                                              appendHeader(string, string) self Adds a header to the HTTP response. The first argument specifies the header name and the second argument the header value
                                                              setHeaders(object) self Sets all of the headers for the HTTP response. Takes an object mapping the names of the headers to their respective values
                                                                    
                                                                    
                                                                    
                                                                    Twilio Responseを使用してステータスコードを設定する例

                                                                    レスポンスにステータスコードを設定する

                                                                    Twilio Responseを使用してステータスコードを設定する例
                                                                          
                                                                          
                                                                          
                                                                          Twilio Responseでプレーンテキストのレスポンスを組み立てる例

                                                                          プレーンテキストのレスポンスを組み立てる

                                                                          Twilio Responseでプレーンテキストのレスポンスを組み立てる例
                                                                                
                                                                                
                                                                                
                                                                                Twilio Responseを使用してJSONレスポンスを組み立てる例

                                                                                JSONレスポンスを組み立てる

                                                                                Twilio Responseを使用してJSONレスポンスを組み立てる例
                                                                                      
                                                                                      
                                                                                      
                                                                                      Twilio Responseを使用してヘッダーを設定する例

                                                                                      ResponseにHTTPヘッダーを設定する

                                                                                      Twilio Responseを使用してヘッダーを設定する例
                                                                                            
                                                                                            
                                                                                            
                                                                                            Twilio Responseに複数のヘッダーを設定する例

                                                                                            Responseに複数のHTTPヘッダーを設定する

                                                                                            Twilio Responseに複数のヘッダーを設定する例

                                                                                            Fixing CORS errors

                                                                                            A common use case is to call Functions from a Flex Plugin to retrieve external data such as statistics. Sometimes, this results in Cross-Origin Resource Sharing (CORS) restrictions in production environments due to the different hostnames between the Flex Plugin and the Function being called.

                                                                                            Fortunately, CORS errors, in this context or other situations, can be addressed by leveraging the response headers of the Function to allow any Origin, as shown in the following example.

                                                                                            If you want to learn more about Flex Plugins that would be invoking a Function in this way, check out this tutorial on calling a Function from a Flex Plugin.

                                                                                                  
                                                                                                  
                                                                                                  
                                                                                                  ページを評価:

                                                                                                  ヘルプが必要ですか?

                                                                                                  We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Community Forums or browsing the Twilio tag on Stack Overflow.

                                                                                                        
                                                                                                        
                                                                                                        

                                                                                                        フィードバックくださりありがとうございます!

                                                                                                        We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

                                                                                                        Sending your feedback...
                                                                                                        🎉 Thank you for your feedback!
                                                                                                        Something went wrong. Please try again.

                                                                                                        Thanks for your feedback!

                                                                                                        Refer us and get $10 in 3 simple steps!

                                                                                                        ステップ1

                                                                                                        Get link

                                                                                                        Get a free personal referral link here

                                                                                                        ステップ2:

                                                                                                        Give $10

                                                                                                        Your user signs up and upgrade using link

                                                                                                        ステップ3

                                                                                                        Get $10

                                                                                                        1,250 free SMSes
                                                                                                        OR 1,000 free voice mins
                                                                                                        OR 12,000 chats
                                                                                                        OR more